JavaScript 传播语法有问题

having trouble with JavaScript spread syntax

我刚刚阅读了 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 中都试过了,我是 运行 最新的浏览器版本,所以页面上说代码应该可以工作。

谁能告诉我问题出在哪里?

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

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

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

console.log(updatedInventory)

应该打印出来:

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

但是如您所见,浏览器抛出错误。如果我没记错的话,object-spread 是一个 ES7 提案,而 array spreading 是一个 ES6 提案,这可能就是为什么 object-spreading 还没有完全实现的原因。

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

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