JavaScript传播语法有问题

时间:2016-04-09 04:32:25

标签: javascript ecmascript-6 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上都尝试过,我正在运行最新的浏览器版本,所以页面上说代码应该有用。

谁能告诉我这是什么问题?

1 个答案:

答案 0 :(得分: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中,你会看到正确的控制台输出(在右下角)。