在销毁过程中,这两个代码的结果确实有所不同。我不确定为什么。
提示说const [b,a] = [a,b]
将导致a,b
的值为undefined
(从左到右的简单分配规则)。我不明白为什么会这样。
let a = 8, b = 6;
(() => {
[b,a]=[a,b];
})();
console.log(a); // should be 6
console.log(b); // should be 8
结果发生了变化,但是当附加const时,该值未切换。
答案 0 :(得分:11)
提示说
const [b,a] = [a,b]
将导致a,b的值未定义(从左到右的简单分配规则)。我不明白为什么会这样。
不会。如果FreeCodeCamp说了,那就错了。
如果在const
之前添加[b,a] = [a,b]
,则会得到ReferenceError,因为您会遮蔽外部a
和b
内部的,并尝试在初始化之前使用内部的
let a = 8, b = 6;
(() => {
const [b,a]=[a,b];
})();
console.log(a); // should be 6
console.log(b); // should be 8
如果他们打算在初始声明中使用const
而不是let
,那么 也不会生效。相反,您将收到TypeError,因为您正试图分配给一个常量:
const a = 8, b = 6;
(() => {
[b,a]=[a,b];
})();
console.log(a); // should be 6
console.log(b); // should be 8