奇怪的ES6 Array.every行为

时间:2017-02-07 23:39:08

标签: javascript arrays ecmascript-6

[,'a'].every(x => x==='a') 
> True

返回 True ,但第一项是“未定义”,因此应该为假?

[,'a'].map(x => x) 
> [undefined × 1, "a"]

2 个答案:

答案 0 :(得分:5)

内置数组方法忽略sparse arrays上的不存在的属性。第一项不是undefined,索引0中根本没有属性。你可以尝试

[,'a'].every(x => x==='a') 
> true
[undefined,'a'].every(x => x==='a') 
> false

答案 1 :(得分:-3)

由于undefined是typeof,因此使用==(两次)而不是三次。它返回true,因为x为空,因此未定义的类型匹配undefined(因为你使用=三次)

相关问题