let array = [,1,,2,,3];
array = array.map((i)=>++i);
执行后array是什么?
如果你认为结果是
[NaN,2,NaN,3,NaN,4]
那么你就需要继续往下看了。
ES5中:
- 在大多数情况下会忽略空位,例如forEach、for in、filter、every、reduce、some都会跳过空位。
- map也像上面那些方法一样,会跳过空位,但是会保留这个值,join和toString会将空位与undefined以及null处理成空字符串。 ES6中:
- 例如 Array.form() 方法会讲数组的空位转为 undefined。
- 扩展运算符也会将空位转为 undefined。
- copyWithin() 会连同空位一起拷贝。
- for of 循环也会遍历空位并将值作为 undefined。
- includes()、entries()、keys()、values()、find() 和 findIndex() 等会将空位处理成 undefined。
所以显而易见,答案是[,2,,3,,4]
。