const arr = [0,1,2,3,4];
1.arr打印多少: arr['10'] = 10; console.log(arr);
2.arr打印多少: arr[true] = true; console.log(arr);
3.arr打印多少: arr[false] = false; console.log(arr);
4.arr打印多少: arr['function'] = ()=>{}; console.log(arr);
第一道面试题
const arr = [0,1,2,3,4];
arr['10'] = 10;
console.log(arr);
运行结果:
结果分析:
1.arr是一个数组,数组是有索引下标的,eg:arr[0]、arr[1];
2.在数组中arr['10']相当于数组的索引下标为10的那一项数值,而数组是有长度的,那么前面没有数据数值的那5项,就会是一个空数值的类型;
3.又将arr['10']赋值给了一个数据10,所以打印出的结果是以上的运行结果。
注意:整数语法符合规范的字符串,数组中会将中括号中的字符串类型自动转化成数字类型作为索引下标。 并且空对象的调用是undefined。
第二道面试题
const arr = [0,1,2,3,4];
arr[true] = true;
console.log(arr);
运行结果:
结果分析:
1.arr[true]的true是一个非数据数值类型,如果一定要在数组中新增这个数据数值单元,那么下标就是true,所对应的值就是true;
2.但是他是一个非数字类型,数组并不会计算他们到length的长度中;
第三道、第四道 面试题
const arr = [0,1,2,3,4];
arr[true] = true;
console.log(arr);
arr['function'] = ()=>{};
console.log(arr);
运行结果:
结果分析:
1.和上述的分析师一摸一样的,会新增这个数据单元,但是数组的长度不会增加;
注意:如果数组中新增单元索引下标一定要设定成字符串true/false/null/undefined,或者非数值类型(除了字符串的数值类型),不包括2e3,那么在数组中都会新增这个单元,但是length属性没有增加,也就是下标是字符串的数值单元不计算数组长度。