js解构分配在while循环中不起作用

时间:2019-07-18 00:58:30

标签: javascript destructuring

[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())

2 个答案:

答案 0 :(得分:6)

问题在于,自动分号插入未达到您的期望。它之间没有添加分号

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())

答案 1 :(得分:0)

您也可以使用以下功能:

    function fibonacciSequence() {
      let [a, b] = [0, 1];
      while (a <= 255) {

       b = a + b;
       a = b - a;
       console.log(a,b);
      }
    }
    fibonacciSequence();