方法前的方括号

square bracket before method

本文关键字:方括号 方法      更新时间:2023-09-26

谁能告诉我方法调用前的方括号是什么意思?我以前从未见过它...

return [].concat(privateUserList);

谢谢!

[]是一个

空数组。就像[1,2,3,4]一样,它将是一个包含四个元素的数组。

该代码段创建一个空数组,然后连接到它privateUserList .

[]创建一个空数组。 [].concat 是数组上的一个方法,该代码privateUserList传递到该方法。最终结果是一个新数组,其中包含与privateUserList相同的条目(如果它是一个数组)或包含privateUserList本身(如果它不是数组)。

理论上效率低下,因为它创建并丢弃了一个数组(因为concat创建了一个数组,所以[]创建的数组被丢弃了)。但是,创建并丢弃数组的其他常见相关习语非常常见,并且可能会被优化出来。

如果(再次)我们假设privateUserList是一个数组,那么更直接的方法是:

return privateUserList.slice();

如果我们想支持任何类似数组的东西concat没有),我们会使用:

return Array.prototype.slice.call(privateUserList);

或在 ES2015 上(或带有垫片):

return Array.from(privateUserList);