javascript-方法前的方括号

javascript-方法前的方括号,javascript,angularjs,Javascript,Angularjs,有人能告诉我方法调用之前的方括号是什么意思吗?我以前从未见过它 return[].concat(privateUserList) 谢谢 []是一个空数组。就像[1,2,3,4]一样,它是一个包含四个元素的数组 该代码段创建一个空数组,然后连接到它privateUserList[]创建一个空数组[].concat是数组上的一个方法,该代码将privateUserList传递到该数组中。最终结果是一个新数组,其中包含与privateUserList(如果是数组)相同的条目,或者包含privateUs

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

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);