我尝试使用 0 到 100 和 100 到 0 之间的 while 进行无限循环,但浏览器崩溃了。有没有办法清除浏览器内存?这是我的代码:
var a = 0;
var flag = true;
while (true) {
if (a < 100 && flag == true) {
a++;
} else {
a = 0;
flag = false;
if (a < 0) {
flag = true;
}
}
console.log(a);
}
无限的 while 循环会阻塞主线程,相当于崩溃。
您可以使用自调用函数(这使得主线程在其间执行一些其他操作):
(function main(counter){
console.log(counter);
setTimeout(main,0,counter+1);
})(0);
您可以将一个从 0 到 100 的循环和一个从 100 到 0 的循环放入其中,而不会过多地阻塞浏览器:
(function main(){
for(var counter=0;counter<100;counter++){
console.log(counter);
}
console.log(100);
while(counter){
console.log(--counter);
}
setTimeout(main,0);
})();
http://jsbin.com/vusibanuki/edit?console http://jsbin.com/vusibanuki/edit?console
进一步的研究:JS IIFEs , 函数表达式, 非阻塞槽setTimeout ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)