我正在运行以下代码:
const [a, b] = [1, 2]
const [c, d] = [3,4]
[a,b] = [b, a]
console.log(a, b, c, d)
预期结果:
2,1,3,4实际结果:
1,2,2,1我知道在每一行的末尾加上分号会解决问题,但我不明白为什么我会得到这样的结果,有人能解释一下为什么会发生这种情况吗?
发布于 2019-08-09 04:15:38
不能分配给a,b,因为它是const。你真正要做的是:
const [c, d] = [3,4][a,b] = [b, a]既然a=1和b= 2,这意味着
const [c, d] = [3,4][1,2] = [2, 1]和
[3,4][1,2] = [2,1]因此,计算结果仅为2,1:
A=1b=2c=2d=1
它还设置了数组的第二个元素3,4到2,1,但是这个数组没有被分配到任何地方,所以这并不重要。
发布于 2019-08-09 04:13:18
分号很重要:
let [a, b] = [1, 2];
let [c, d] = [3,4];
[a,b] = [b, a];
console.log(a, b, c, d);
在原始代码中,第二行和第三行一起解释为const [c, d] = [3,4][a,b] = [b, a],从而将2和1分配给c和d。
在添加分号之后,将出现一个关于分配给常量变量的错误。将const声明更改为let将提供预期的输出。
发布于 2019-08-09 04:15:41
您可能希望使用var或let而不是const。您基本上是在做以下操作,因为您没有使用分号。a,b被分配给c,d
const [a, b] = [1, 2]
const [c, d] = [3,4][a,b] = [b, a]
console.log(a, b, c, d)
当你想要做的时候:
var [a, b] = [1, 2];
var [c, d] = [3,4];
[a,b] = [b, a];
console.log(a, b, c, d);
https://stackoverflow.com/questions/57423405
复制相似问题