【问题标题】:Strange ES6 Array.every behavior奇怪的 ES6 Array.every 行为
【发布时间】:2017-02-07 23:39:08
【问题描述】:
[,'a'].every(x => x==='a') 
> True

返回 True,虽然第一项是“未定义”,因此应该是 False?

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

【问题讨论】:

标签: javascript arrays ecmascript-6


【解决方案1】:

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

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

【讨论】:

  • 证明是稀疏数组:Object.keys([,'a']) 返回["1"],而不是["0","1"]。
【解决方案2】:

由于 undefined 是一个 typeof,所以使用 ==(两次)而不是三次。它返回 true 因为 x 是空的,因此 typeof undefined 匹配 undefined (因为你使用 = 三次)

【讨论】:

  • 是一样的
  • typeof 在哪里发挥作用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多