“ for([0,0]中的const [[[[[[[a,b,c]]]]]]怎样有效?

时间:2018-11-05 00:20:06

标签: javascript

写哑代码,我发现有些奇怪。

for(const [[[[[fancy, loop]]]]] in [0, 0]) {
  console.log(fancy, loop);
}

// Chrome 70.0.3538.77 says:
// 0 undefined
// 1 undefined

就像将01分配给[[[[[fancy, loop]]]]]一样,这是数组解构发生并应该引发错误,不是吗?或不。这只是我的想法,现在让我感到困惑。

能否请您告诉我它如何有效且无错误?我想念什么?

2 个答案:

答案 0 :(得分:25)

没有将01分配给[[[[[fancy, loop]]]]]。您正在遍历[0, 0]的键,因为您使用的是in而不是of,而这些键是 strings

字符串"0"是可迭代的,唯一的元素是"0"。反复将"0"分配给[[[[[fancy, loop]]]]],将"0"拆包并得到"0",直到最终下降到

[fancy, loop] = "0"

这时,最终的拆包将"0"分配给fancy,将undefined分配给loop

答案 1 :(得分:4)

您使用的是in而不是of,所以您获取的是数组的属性而不是值。在这种情况下,您将获得数组索引作为字符串(01)。基本上,您每次都在破坏长度为1的字符串。因此,您始终会获得每个迭代属性的第一个字符