我刚刚阅读了有关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上都尝试过,我正在运行最新的浏览器版本,所以页面上说代码应该有用。
谁能告诉我这是什么问题?
答案 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中,你会看到正确的控制台输出(在右下角)。