javascript - “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
这就像分配0
和1
到[[[[[fancy, loop]]]]]
,数组解构正在发生并且应该抛出错误,不是吗?或不。这只是我的想法让我现在感到困惑。
你能告诉我它是如何有效的并且没有错误地工作吗?我错过了什么?
解决方案
它不是分配0
and 1
to [[[[[fancy, loop]]]]]
。您正在遍历 , 的键[0, 0]
,因为您使用in
了而不是of
,而这些键是strings。
该字符串"0"
是一个可迭代的,其唯一元素是"0"
。分配"0"
给[[[[[fancy, loop]]]]]
反复解包"0"
和获取"0"
,直到最终归结为
[fancy, loop] = "0"
在这一点上,最后的拆包分配"0"
给fancy
和undefined
。loop
推荐阅读
- javascript - 当我将标记放在 array.map(){} 函数中时,标记不显示
- gitlab - 如何为我的所有 gitlab 存储库下载 zip/tar.gz 文件?
- regex - 正则表达式查询——Grafana
- python - 我在 python 中遇到 Pyinstaller 的问题
- http - 服务器如何真正处理对 http 请求的响应?
- tensorflow - 如何在预训练模型中随机初始化层?
- input - Shiny R Selectize Input 小部件大小以输入为目标
- google-sheets - 谷歌表格上的密码保护下拉菜单。(javascript)
- java - 带有kotlin的android中的bottombarview在未选择的项目下不显示文本
- gitlab - 标签版本未按顺序创建