建议:进行数组合并时,若不确定数组最终长度或者数组长度超过下述表中数据,建议使用 concat
最近踩了个坑,在进行数组合并时出现了栈溢出的报错。
示例代码:
const arr = []
for (let i = 0; i < 500000; i++) {
  arr.push(i)
}
let arr2 = []
// 出错:下面这3种进行数组组合的方式会报栈溢出
arr2.push.apply(arr2, arr)
arr2.push.call(arr2, ...arr)
arr2.push(...arr)
// 正确:下面可以
arr2 = arr2.concat(arr)
 
原因:
 虽然 ECMAScript 5.1 标准 8.8 里说可以任意长度,但实际运行中是有限制的。即 JavaScript 函数可以接受的参数数量是有上限的!!!
各浏览器限制如下:
 
 我自己亲测 nodejs 的最长限制是:125563
参考:https://stackoverflow.com/questions/61740599/rangeerror-maximum-call-stack-size-exceeded-with-array-push









![[CMakeLists]cmake设置堆栈保留大小](https://img-blog.csdnimg.cn/6f2212f85f3d417e9aafbd25bafbbedc.png)









