gpt4 book ai didi

javascript - 为什么解构的工作方式不同于 Javascript (ES6) 中的经典赋值?

转载 作者:数据小太阳 更新时间:2023-10-29 06:09:34 24 4
gpt4 key购买 nike

正如您在这里看到的,我们将“fibonacci”设置为“可迭代”对象,并使用 for .. of: 对其进行循环:

let fibonacci = {
[Symbol.iterator]() {
let pre = 0, cur = 1;
return {
next() {
[pre, cur] = [cur, pre + cur];
return { done: false, value: cur }
}
}
}
}

for (var n of fibonacci) {
// truncate the sequence at 1000
if (n > 1000)
break;
console.log(n);
}

正如 for of 循环中预期的那样,控制台日志写入 1,2,3,5,8,..

但是

如果我写 pre = cur; cur = pre + cur; 而不是 [pre, cur] = [cur, pre + cur];

console.log 将写入 2,4,8,16,..

为什么?解构不只是一种在一行中设置多个值的方法吗?我们如何解释分配的差异?

最佳答案

pre = cur; cur = pre + cur; 

通过对 pre 的赋值,您丢失了 pre 的旧值,并且下一个赋值是错误的。

pre  cur  comment           values
--- --- ---------------- -------
0 1 start values *
1 1 pre = cur
1 2 cur = pre + cur *
2 2 pre = cur
2 4 cur = pre + cur *
[pre, cur] = [cur, pre + cur];

destructuring assignment保留值直到分配整个数组。

关于javascript - 为什么解构的工作方式不同于 Javascript (ES6) 中的经典赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49316973/

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