As you can see here, we set the “fibonacci” as an “iterable” object, and we loop on it with for 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) {
As expected for the loop, writing to the console writes 1,2,3,5,8, ..
BUT
if I write pre = cur; cur = pre + cur; pre = cur; cur = pre + cur; instead of [pre, cur] = [cur, pre + cur];
console.log will write 2,4,8,16, ..
Why? Isn't it just breaking the way to set multiple values on the same line? How can we explain the difference in purpose?
source share