我有两个数组,
const pets = ["dog", "cat", "hamster"]
const wishlist = ["bird", "snake"]
我想将 wishlist
附加到 pets
,这可以使用两种方法完成,
方法一:
pets.push.apply(pets,wishlist)
结果是: [ 'dog', 'cat', 'hamster', 'bird', 'snake' ]
方法二:
pets.push(...wishlist)
这也导致: [ 'dog', 'cat', 'hamster', 'bird', 'snake' ]
当我处理更大的数据时,这两种方法在性能方面是否存在差异?
原文由 Net Myth 发布,翻译遵循 CC BY-SA 4.0 许可协议
Function.prototype.apply
和扩展语法在应用于大型数组时都可能导致堆栈溢出:使用
Array.prototype.concat
代替。除了避免堆栈溢出concat
还具有避免突变的优点。突变被认为是有害的,因为它们会导致微妙的副作用。但这不是教条。如果您在函数范围内并执行突变以提高性能并减轻垃圾收集,您可以执行突变,只要它们在父范围内不可见即可。