03 JavaStrip 数组空位与undefined

数组的空位

数组的某一个位置没有任何值

产生空位的情况

1、数组中两个逗号之间不放任何值;

const color=['red',,'green',undefined];
console.log(color); //["red", empty, "green", undefined]
console.log(color[1],color[1]==color[3]);   //undefined

2、用new Array的方法,参数里是个数字;

const arr=new Array(3);
console.log(arr);   //[empty × 3]

3、通过一个不存在的下标去增加数据;

4、增加数组length属性的值;

arr[6]='';
console.log(arr);   //[empty × 6, ""]
arr.length=20;
console.log(arr);   //[empty × 6, "", empty × 13]

空位的特点

1、空位也是数组的数据;
2、空位在读取的时候为undefined;
3、如果数组最后一个数据后有逗号,并不会产生空位(非IE678浏览器),避免在最后加逗号;
4、数组的空位与某个位置为undefined是不一样的(在循环时候);
  1、for、for...of循环会把空位处理成undefined;

const color=['red',,'green',undefined];
for(var i=0;i

  2、entries、keys、values、find和findIndex会将空位处理成undefined;
  3、for...in、forEach、map、filter、Object.keys()、every、some都会忽略空位;

const color=['red',,'green',undefined];
for(var attr in color){
      console.log('key: '+attr+' ;value: '+color[attr]);
}
//key: 0 ;value: red
//key: 2 ;value: green
//key: 3 ;value: undefined

注意:

1、数组的一些方法对于空位的处理是不一样,所以最好拒绝数组里出现空位,或者用undefined代替;
2、ES6则是明确将空位转为undefined;

你可能感兴趣的:(03 JavaStrip 数组空位与undefined)