在Chrome和Node中,以下代码会引发错误:
function noop() {} var a = new Array(1e6) // Array[1000000] noop.apply(null,a) // Uncaught RangeError: Maximum call stack size exceeded
我理解为什么将100万个参数传递给一个函数可能是一个坏主意,但任何人都可以解释为什么错误是超出最大调用堆栈大小而不是更相关的东西?
(如果这看起来很无聊,原始案例是Math.max.apply(Math,lotsOfNumbers),这是从数组中获取最大数字的一种不合理的方式.)