在Javascript中,如果有以下代码:
var j = 0;
for(i=0; i<j; i++){
//JS Code
}
在此代码中,变量j (即浏览器将不挂起的最大值)的最大值取决于什么因素将取决于(例如,可能是Machine的RAM或Processor,或者可能是在其中执行的代码循环)?
这个最大允许值可以计算吗?
这是必需的,因为需要处理的数组很大。
感谢您的任何建议。
不,您无法计算出来,因浏览器而异。某些浏览器按时间执行操作(例如,您的代码已运行X秒钟以上而没有返回浏览器;在Firefox 7上,默认值为10秒,但the user can change it),其他浏览器按操作次数(IE, for instance ])。
您最好的选择是重构代码,这样您甚至可以避免接近极限。如果您需要做大量工作,请将其分成多个块,然后使用setTimeout
(超时值为0
)一个接一个地运行这些块。这会返回到浏览器(超过0
毫秒;确切的时间取决于浏览器以及页面上发生的其他事情。)
这是一个在100,000个迭代块中计数到10,000,000的示例:
在处理大量数据时保持UI响应的一种常见做法称为分块。您可以分割项目组,并使用setInterval或setTimeout结束每个组的循环。
JavaScript中的最大安全整数是9007199254740991
,您可以在浏览器的控制台中检查它