【问题标题】:having trouble with JavaScript spread syntaxJavaScript 扩展语法有问题
【发布时间】:2016-07-30 11:53:42
【问题描述】:

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

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

【问题讨论】:

  • 您的预期输出是什么?这:myFunction(...obj); 在控制台中给我一个错误。你明白了吗?
  • 他正在尝试运行this example

标签: javascript ecmascript-6 spread-syntax


【解决方案1】:

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

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,您将看到正确的控制台输出(在右下角)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 2023-01-10
    • 2011-05-28
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多