看完这个question ,我才知道
let a = [1, 2] [3, 4] = [5, 6];
console.log(a);
是有效的 JavaScript 代码,但是我无法理解它是如何工作的。 谁能解释一下上面代码的工作流程。
最佳答案
执行了很多变体之后
让 a = [1, 2] [3, 4] = [5, 6];
我才知道
[1, 2] [3, 4]
相当于 [1, 2][4]
,其中 [1, 2]
代表一个数组
,而[4]
代表[1, 2]
数组的第5个索引,但找不到任何官方文档。
更新
我对评论中提到的文档是错误的,[3, 4]
中的 []
是属性访问器,而 3, 4
是两个不同的代码语句由 Comma operator 分隔。在逗号运算符中,每条由 ,
分隔的语句从左到右执行,并返回最后一条语句的结果。
上面的代码现在简化为
让 a = [1, 2][4] = [5, 6];
比较容易理解。如果我们再简化一点,它就变成了
let arr = [1, 2];
let a = arr[4] = [5, 6];
console.log(a);
console.log(arr);
现在很容易解释它 arr[4] = [5, 6]
将 [5, 6]
分配给 arr< 的第 5 个索引
和 a = arr[4]
将 arr
的第 5 个索引分配给 a
,现在是 [5, 6]
因此 [5, 6]
被分配给 a
。
现在 a
的当前值为 [5, 6]
,arr
的当前值为 [ 1, 2, undefined , 未定义, [ 5, 6 ] ]
让我们再次重写上面的代码
let arr = [1, 2];
let a = arr[3, 4] = [5, 6];
console.log(a);
console.log(arr);
关于javascript - JavaScript 中不明确的数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49293973/