0

我刚刚阅读了 ES6 传播语法的 MDN 页面,页面上的大多数示例都有效,但最后一个没有:

var obj = {"key1":"value1"};
function myFunction(x) {
    console.log(x); // undefined
}
myFunction(...obj);
var args = [...obj];
console.log(args, args.length) //[] 0

我在 Chrome 和 Firefox 中都试过了,而且我运行的是最新的浏览器版本,所以页面说代码应该可以工作。

谁能告诉我问题是什么?

4

1 回答 1

4

问题很可能是浏览器当前不支持对对象使用扩展语法。做这样的事情:

let inventory = {
  apples: 3,
  oranges: 4
}

let updatedInventory = {
  ...inventory,
  grapes: 4
}

console.log(updatedInventory)

应该打印出这个:

{"apples":3,"oranges":4,"grapes":4}

但如您所见,浏览器正在抛出错误。如果我没记错的话,对象扩展是 ES7 提议,而数组扩展是 ES6 提议,这可能是对象扩展尚未完全实现的原因。

要尝试最新的 ES6/ES7 尚未实现的东西,可以使用Babel 提供的在线REPL 。这很酷,因为您可以在右侧看到等效的 ES5 代码输出。

如果将上述代码示例放入 repl 中,您将看到正确的控制台输出(在右下角)。

于 2016-04-09T04:44:09.823 回答