MDN Web Docs有这样的例子:
使用绑定模式作为rest属性
数组解构赋值的rest属性可以是另一个数组或对象绑定模式。这允许你同时解包数组的属性和索引。
const [a, b, ...{ pop, push }] = [1, 2];
console.log(a, b); // 1 2
console.log(pop, push); // [Function pop] [Function push]
什么是pop
和push
函数以及如何使用它们?
> pop()
Uncaught TypeError: Cannot convert undefined or null to object
at pop (<anonymous>)
> push(3)
Uncaught TypeError: Cannot convert undefined or null to object
at push (<anonymous>)
1条答案
按热度按时间q8l4jmvw1#
使用常规解构,您可以执行以下操作:
下面是一个例子:
rest
将是一个包含第三个数字的数组。由于没有第三个数字,rest
将是一个空数组。push
和pop
是可以从数组对象中解构出来的函数。这解释了为什么const [a, b, ...{ pop, push }] = [1, 2];
会从spread语法产生的空数组中提取pop
和push
函数。因为你没有spread语法创建的数组的引用,所以这些方法在你给出的例子中不是很有用。正如@pilchard指出的,要调用这些方法中的任何一个,你需要使用
call
或apply
,这样this
将被设置为特定的数组示例。一个更有用的例子是获取数组中其他元素的计数(没有单独解构):