【发布时间】:2015-06-12 18:12:05
【问题描述】:
以下代码
var interval = function (a, b) {
var i, list = [];
for (i = a; i <= b; i++) {
list.push(i);
}
return list;
},
xs = interval(1, 500000);
Math.max.apply(null, xs);
生成一个未捕获的 RangeError:超出最大调用堆栈大小。 如何克服?
请注意,区间函数只是一种快速生成测试数据的方法。
我使用了 Math.max.apply 方法,因为它在此处进行了描述:Mozilla developer network
这不是一个可接受的解决方案,因为 javascript 具有函数调用允许的最大参数数量,感谢 Rocket Hazmat 指出,有关更多信息,请参阅他的答案。
underscore.js 库对 max 函数使用了一个简单的实现,我认为最合适的解决方案是在代码库中包含一个简单的 max 实现并使用它。有关更多详细信息,请参阅@AnotherDev 答案
【问题讨论】:
-
大声笑 - 通过解决您自己的问题来避免“堆栈溢出”:D
-
您可以在生成列表时简单地计算最大值,或者通过迭代值。 stackoverflow.com/questions/22747068/…
-
P.S.你不知道最大值吗?您使用 2 个号码拨打
interval。显然,b(500000) 是最大的。 -
@RocketHazmat,间隔没关系,只是演示概念的一种方式,构建假数据
标签: javascript