在ECMAScript规范中,描述了SpreadElement
。
SpreadElement[Yield]:
...AssignmentExpression[In, ?Yield]
这与 Spread语法 相同吗?
Spread syntax allows an iterable such as an array expression or string to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected, or an object expression to be expanded in places where zero or more key-value pairs (for object literals) are expected.
Syntax
For function calls:
myFunction(...iterableObj);
For array literals:
[...iterableObj, 4, 5, 6]
你是否看过MDN文档中描述的内容?
SpreadElement
和展开语法的使用案例是什么?如果SpreadElement
和展开语法不同,它们具体有哪些区别?
x = f(a, ...b)
展开b
,function f(a, ...b)
将其余参数收集到b
中。数组也是一样的:在字面量中x = [a, ...b]
是展开,在解构赋值[a, ...b] = x
中则是剩余。 - Amadanx = f(a, ...b)
中,b
必须是一个可迭代对象。我认为这仍然被称为 spread。而function f(a, ...b)
,它使得b
必须出现在最后,并且能够包含其余的参数。因此,我称之为 Rest parameters。 - choz