文章目录
- 一、问题
- 二、原因
- 三、解决
- 3.1、使用拓展运算符`...`合并(推荐使用)
- 3.2、使用`concat`合并
- 3.3、循环`push`
- 四、最后
一、问题
const items = []
const newItems = new Array(1000000)
items.push(...newItems)
上面代码会出现如下错误:
Uncaught RangeError: Maximum call stack size exceeded at https://cdpn.io/cpe/boomboom/pen.js?key=pen.js-7df03a40-5650-390b-0629-f7fdd26816e0:3
二、原因
拓展运算符
...
传参它会自动转成使用apply
方法,而在apply
方法参数过多的时候就会引起爆栈
三、解决
3.1、使用拓展运算符...
合并(推荐使用)
const items = [];
const newItems = new Array(1000000);
const result = [...items,...newItems];
console.log(result)
3.2、使用concat
合并
const items = [];
const newItems = new Array(1000000);
result = items.concat(newItems);
console.log(result)
3.3、循环push
const items = [];
const newItems = new Array(1000000);
for (let i = 0; i < newItems.length; i++) {items.push(newItems[i]);
}
const result = items
console.log(result);
四、最后
本人每篇文章都是一字一句码出来,希望对大家有所帮助,多提提意见。顺手来个三连击,点赞👍收藏💖关注✨,一起加油☕