【发布时间】:2018-08-25 07:09:30
【问题描述】:
正如您在此处看到的,我们将“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,..
为什么?解构不只是一种在一行中设置多个值的方法吗?我们如何解释分配的差异?
【问题讨论】:
标签: javascript ecmascript-6 destructuring