我发现了一些奇怪的东西
我正在尝试将数组值0与数组值1交换
我发现以前的帖子说这是可能的
[arr[0], arr[1]] = [arr[1], arr[0]];
所以我想复制它
let array_names = ["Dave", "johson", "Lime", "Key", "Freeman", "Chell", "Shepart", "Furious"]
[array_names[0], array_names[1]] = [array_names[1], array_names[0]]
但是奇怪的事情发生了
我收到一条错误消息,指出
ReferenceError: Cannot access 'array_names' before initialization
我已经检查过了,没有一个错字。
另外,是的,在进行任何修改之前,我确实初始化了阵列
3条答案
按热度按时间7jmck4yq1#
您的代码完全正确,但由于缺少分号,解释器对您的代码进行了不同的分析。
表达式的计算结果为
代码被分析为一行语句。
Shubhada给出的正确答案是
dwbf0jvd2#
JS实际上试图将您的代码解释为:
它试图访问数组
["Dave", "johson"]
的索引[array_names[0], array_names[1]]
,而那时array_names
还没有定义。您可以(应该)使用分号来修复:
okxuctiv3#
我试着跟着
并得到结果
就像here一样。但是使用您的代码,我可以获得
元素不交换的地方我也不明白。