gpt4 book ai didi

javascript - 为什么 Node.js 中的 console.log 会干扰变量的排列?

转载 作者:搜寻专家 更新时间:2023-11-01 00:20:59 27 4
gpt4 key购买 nike

我对 Node (v8.5.0) 解释这段代码的方式感到非常惊讶:

var a = 5;
var b = 10;

console.log('a = ' + a)
console.log('b = ' + b)

[a, b] = [b, a];

console.log(a);
console.log(b);

响应是

[a, b] = [b, a];
^

TypeError: Cannot set property '10' of undefined
at Object.<anonymous> (/Users/pom/lab/ES6-tests/destructuring.js:25:8)
at Module._compile (module.js:624:30)
at Object.Module._extensions..js (module.js:635:10)
at Module.load (module.js:545:32)
at tryModuleLoad (module.js:508:12)
at Function.Module._load (module.js:500:3)
at Function.Module.runMain (module.js:665:10)
at startup (bootstrap_node.js:201:16)
at bootstrap_node.js:626:3

如果我只保留 console.log 中的 var,显示是正确的

console.log(a)
console.log(b)

[a, b] = [b, a];

这是做什么的?

最佳答案

这是无效左侧参数的结果,可能是由于解析问题。

原因是您在 console.log 调用后缺少分号,这会使解释器感到困惑,并且看起来会导致两行代码连接在一起。您可以看到,使用分号有效,没有分号则无效。

console.log("works");
var a = 5;
var b = 10;

console.log('a = ' + a);
console.log('b = ' + b);

[a, b] = [b, a];

console.log(a);
console.log(b);

console.log("fails (with no semi-colon)");
var a = 5;
var b = 10;

console.log('a = ' + a)
console.log('b = ' + b)

[a, b] = [b, a];

console.log(a);
console.log(b);

关于javascript - 为什么 Node.js 中的 console.log 会干扰变量的排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46185915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com