【发布时间】:2017-07-04 22:10:59
【问题描述】:
在 Chrome 和 Node 中,以下代码会引发错误:
function noop() {}
var a = new Array(1e6)
// Array[1000000]
noop.apply(null, a)
// Uncaught RangeError: Maximum call stack size exceeded
我理解为什么将 100 万个参数传递给函数可能是个坏主意,但谁能解释为什么错误是 Maximum call stack size exceeded 而不是更相关的东西?
(如果这看起来很无聊,原来的情况是Math.max.apply(Math, lotsOfNumbers),这是从数组中获取最大数的一种不合理的方式。)
【问题讨论】:
-
...因为函数参数存储在堆栈中?
-
嗯,是的,这就是我丢失的信息 :)
标签: javascript function apply