js解构赋值在while循环中不起作用
js destructuring assignment not work in while loop
[a,b] = [b, a+b]
这里不行,a b 总是 0 和 1。
如果使用临时变量来交换值,那是可行的。
function fibonacciSequence() {
let [a, b, arr] = [0, 1, []]
while (a <= 255) {
arr.concat(a)
[a, b] = [b, a + b]
console.log(a, b) // always 0 1
}
}
console.log(fibonacciSequence())
问题是自动分号插入没有按照您的预期进行。它没有在
之间添加分号
arr.concat(a)
和
[a, b] = [b, a + b]
所以它被视为您写的
arr.concat(a)[a, b] = [b, a + b]
显式添加所有分号,您会得到正确的结果。
function fibonacciSequence() {
let [a, b, arr] = [0, 1, []];
while (a <= 255) {
arr.concat(a);
[a, b] = [b, a + b];
console.log(a, b); // always 0 1
}
}
console.log(fibonacciSequence())
您也可以使用以下功能:
function fibonacciSequence() {
let [a, b] = [0, 1];
while (a <= 255) {
b = a + b;
a = b - a;
console.log(a,b);
}
}
fibonacciSequence();
[a,b] = [b, a+b]
这里不行,a b 总是 0 和 1。
如果使用临时变量来交换值,那是可行的。
function fibonacciSequence() {
let [a, b, arr] = [0, 1, []]
while (a <= 255) {
arr.concat(a)
[a, b] = [b, a + b]
console.log(a, b) // always 0 1
}
}
console.log(fibonacciSequence())
问题是自动分号插入没有按照您的预期进行。它没有在
之间添加分号arr.concat(a)
和
[a, b] = [b, a + b]
所以它被视为您写的
arr.concat(a)[a, b] = [b, a + b]
显式添加所有分号,您会得到正确的结果。
function fibonacciSequence() {
let [a, b, arr] = [0, 1, []];
while (a <= 255) {
arr.concat(a);
[a, b] = [b, a + b];
console.log(a, b); // always 0 1
}
}
console.log(fibonacciSequence())
您也可以使用以下功能:
function fibonacciSequence() {
let [a, b] = [0, 1];
while (a <= 255) {
b = a + b;
a = b - a;
console.log(a,b);
}
}
fibonacciSequence();