ES6 对象解构赋值问题

按照阮一峰的ECMA6标准入门例子写的,运行环境为vscode

"use strict"

function* fibs() {
  let a = 0;
  let b = 1;
  while (true) {
    yield a;
    [a, b] = [a, a+b];
  }
}

let [first, second, third, fourth, fifth, sixth] = fibs();
console.log(sixth)

运行报错,报错为

[a, b] = [a, a+b];
^

ReferenceError: Invalid left-hand side in assignment

有知道为什么的大牛吗?

阅读 3.1k
2 个回答

你好像写错了。

应该是 [a, b] = [b, a + b]

这里是迭代过程,先把当前的 b 赋值给 a,然后把当前的 a + b 赋值给 b

相当于这样的写法:

var temp = a
a = b
b = temp + b

很明显,你的环境不支持ES6

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题