如果我跑

Array.apply(null, new Array(1000000)).map(Math.random);

在 Chrome 33 上,我得到

RangeError: Maximum call stack size exceeded

为什么?

答案

浏览器无法处理那么多参数。

alert.apply(window, new Array(1000000000));

这产生RangeError: Maximum call stack size exceeded这与你的问题相同。

要解决这个问题,请执行以下操作:

var arr = [];
for(var i = 0; i < 1000000; i++){
    arr.push(Math.random());
}

来自: stackoverflow.com