首页 > 解决方案 > “for(const [[[[[a, b, c]]]]] in [0, 0]); 怎么样?甚至有效?

问题描述

编写愚蠢的代码,我刚刚发现了一些奇怪的东西。

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

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

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

你能告诉我它是如何有效的并且没有错误地工作吗?我错过了什么?

标签: javascript

解决方案


它不是分配0and 1to [[[[[fancy, loop]]]]]。您正在遍历 , 的键[0, 0],因为您使用in了而不是of,而这些键是strings

该字符串"0"是一个可迭代的,其唯一元素是"0"。分配"0"[[[[[fancy, loop]]]]]反复解包"0"和获取"0",直到最终归结为

[fancy, loop] = "0"

在这一点上,最后的拆包分配"0"fancyundefinedloop


推荐阅读