JavaScript扩展语法有问题

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上都试过了,我正在运行最新的浏览器版

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


有人能告诉我问题出在哪里吗?

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

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)在控制台中给了我一个错误。你明白了吗?他想逃跑。