JavaScript扩展语法有问题
我刚刚阅读了ES6 spread语法的MDN页面,页面上的大多数示例都有效,但最后一个没有:JavaScript扩展语法有问题,javascript,ecmascript-6,spread-syntax,Javascript,Ecmascript 6,Spread Syntax,我刚刚阅读了ES6 spread语法的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上都试过了,我正在运行最新的浏览器版
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}
但正如您所看到的,浏览器抛出了一个错误。如果我没记错的话,对象扩展是一个ES7方案,而数组扩展是一个ES6方案,这可能就是对象扩展尚未完全实现的原因
要尝试尚未实现的最新ES6/ES7功能,您可以使用Babel提供的在线服务。这很酷,因为您可以在右侧看到等效的ES5代码输出
如果将上述代码示例放在repl中,您将看到正确的控制台输出(在右下角)。问题很可能是当前浏览器不支持对对象使用扩展语法。这样做:
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提供的在线服务。这很酷,因为您可以在右侧看到等效的ES5代码输出
如果将上述代码示例放在repl中,您将看到正确的控制台输出(在右下角)。您期望的输出是什么?这:
myFunction(…obj)代码>在控制台中给了我一个错误。你明白了吗?他正试着逃跑。你期望的结果是什么?这:myFunction(…obj)代码>在控制台中给了我一个错误。你明白了吗?他想逃跑。