有人能告诉我方法调用之前的方括号是什么意思吗?我以前从未见过......
return [].concat(privateUserList);
谢谢!
答案 0 :(得分:2)
[]
是一个空数组。就像[1,2,3,4]
将是一个包含四个元素的数组一样。
该代码段创建一个空数组,然后连接到它privateUserList
。
答案 1 :(得分:1)
[]
创建一个空数组。 [].concat
是数组上的一个方法,该代码将privateUserList
传递给它。最终结果是一个新数组包含与privateUserList
相同的条目(如果它是一个数组)或包含privateUserList
本身(如果它不是数组)。
理论上它效率低,因为它会创建并抛弃一个数组(因为concat
创建了一个 new 数组,[]
创建的数组被抛弃了。但是这个创建和丢弃数组的其他常见相关习惯很常见,可能会被优化掉。
如果(再次)我们假设privateUserList
是一个数组,那么更直接的方法是:
return privateUserList.slice();
如果我们想支持类似数组(concat
没有),我们会使用:
return Array.prototype.slice.call(privateUserList);
或在ES2015上(或使用垫片):
return Array.from(privateUserList);