JavaScript 传播语法有问题
having trouble with JavaScript 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 中都试过了,我是 运行 最新的浏览器版本,所以页面上说代码应该可以工作。
谁能告诉我问题出在哪里?
问题很可能是浏览器当前不支持对对象使用扩展语法。做这样的事情:
let inventory = {
apples: 3,
oranges: 4
}
let updatedInventory = {
...inventory,
grapes: 4
}
console.log(updatedInventory)
应该打印出来:
{"apples":3,"oranges":4,"grapes":4}
但是如您所见,浏览器抛出错误。如果我没记错的话,object-spread 是一个 ES7 提案,而 array spreading 是一个 ES6 提案,这可能就是为什么 object-spreading 还没有完全实现的原因。
要试用尚未实现的最新 ES6/ES7 内容,您可以使用 Babel 提供的在线 REPL。这很酷,因为您可以在右侧看到等效的 ES5 代码输出。
如果将上面的代码示例放入 repl,您将看到正确的控制台输出(在右下角)。
我刚刚阅读了 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 中都试过了,我是 运行 最新的浏览器版本,所以页面上说代码应该可以工作。
谁能告诉我问题出在哪里?
问题很可能是浏览器当前不支持对对象使用扩展语法。做这样的事情:
let inventory = {
apples: 3,
oranges: 4
}
let updatedInventory = {
...inventory,
grapes: 4
}
console.log(updatedInventory)
应该打印出来:
{"apples":3,"oranges":4,"grapes":4}
但是如您所见,浏览器抛出错误。如果我没记错的话,object-spread 是一个 ES7 提案,而 array spreading 是一个 ES6 提案,这可能就是为什么 object-spreading 还没有完全实现的原因。
要试用尚未实现的最新 ES6/ES7 内容,您可以使用 Babel 提供的在线 REPL。这很酷,因为您可以在右侧看到等效的 ES5 代码输出。
如果将上面的代码示例放入 repl,您将看到正确的控制台输出(在右下角)。