【发布时间】:2018-08-13 05:14:36
【问题描述】:
我是 Javascript 新手,很困惑为什么以下内容不起作用?
var array = [1, 2, 3, 4]
var spread = ...array;
我原以为它会变成1, 2, 3, 4。相反,它给出了错误消息Unexpected token ...。谁能给我解释一下?
非常感谢!
【问题讨论】:
标签: javascript rest ecmascript-6 spread-syntax
我是 Javascript 新手,很困惑为什么以下内容不起作用?
var array = [1, 2, 3, 4]
var spread = ...array;
我原以为它会变成1, 2, 3, 4。相反,它给出了错误消息Unexpected token ...。谁能给我解释一下?
非常感谢!
【问题讨论】:
标签: javascript rest ecmascript-6 spread-syntax
spread的使用语法是:
对于函数调用:
myFunction(...iterableObj);
对于数组字面量或字符串:
[...iterableObj, '4', 'five', 6];
对于对象文字(ECMAScript 2018 中的新功能):
let objClone = { ...obj };
因此,根据语法,对于使用spread 的数组,您缺少方括号[]:
var array = [1, 2, 3, 4]
var spread = [...array];
console.log(spread);
【讨论】:
这是正确的方法,但是这样做没有任何收获。
var array = [1, 2, 3, 4]
var spread = [...array];
console.log(spread);
如果你真的想解构那个数组,你需要解构赋值:
var array = [1, 2, 3, 4]
var [one, two, three, four] = array;
console.log(one, two, three, four);
【讨论】:
... 来传播数组文字吗?
[] 来包装我们的对象,或者用{} 来包装键值对对象。唯一“不必要”的地方是例如:[1, ...array, 3, 4] 看起来你不需要括号,因为扩展语法没有被它们包围,但是,该数组以及其他对象在 [ ] 之间。
做你想做的事情的正确方法是:
var array = [1, 2, 3, 4]
var spread = [...array];
【讨论】:
[]..在MDN中,他们有以下示例,其中在破坏数组时没有括号:var parts = ['shoulders', 'knees'];var lyrics = ['head', ...parts, 'and', 'toes'];//["head", "shoulders", "knees", "and", "toes"]
parts 数组,然后创建另一个 lyrics 数组,其中包含 'head' 和内部的另一个数组(parts 数组),但您使用的是 Rest 参数而不是 var lyrics = ['head', parts]表示您希望将这些部分解压缩为不同的变量。 var lyrics = ['head', ...parts, 'and', 'toes']我希望我帮助了你,而不是让它变得更加混乱。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
...) 只能作为函数中的参数。在所有其他情况下,它们应该是扩展语法。我引用的示例来自 MDN 传播语法文档。我很感谢你的帮助