JS代码运行到无限循环
JS code running into infinite loop
这是代码,当我运行它时它会无限循环,代码中有什么缺陷吗?
function s4() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
};
function guid() {
return [s4(), s4(), '-' , s4(), '-', s4(), '-', s4(), '-', s4(), s4(), s4()].join('');
}
function randomFromInterval(from,to){
return Math.floor(Math.random()*(to-from+1)+from);
}
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
var data = new Array(500), types = ["date", "slider", "select", "string", "number", "rating", "level", "title"],
allowModify = [true, false], str = "Cell";
for(var i = 0; i < 500; i++){
var arr = new Array(100);
for(var j = 0; j < 100; j++){
var obj = {};
obj.id = guid();
obj.role = types[randomFromInterval(0, 6)];
obj.selected = "";
obj.writable = allowModify[randomFromInterval(0, 1)];
switch(obj.role){
case "slider":
obj.range = [0, randomFromInterval(0, 100)];
obj.text = 0;
break;
case "select":
var num = randomFromInterval(2, 4), _options = Array(num);
for(var opt = 0; opt < num; opt += 1 ){
_options[opt] = {
id : guid(),
text : ["Option[", opt + 1, "]"].join('')
}
}
obj.options = _options;
obj.selected = _options[randomFromInterval(0, num - 1)];
obj.text = obj.selected.text;
obj.selected = obj.selected.id;
break;
case "date":
obj.text = [randomFromInterval(2000, 2013), randomFromInterval(1, 12), randomFromInterval(1, 25)].join('/');
break;
case "string":
obj.text = [str, "[", i , "][", j, "]"].join('');
break;
case "number":
obj.text = randomFromInterval(1, 176432);
break;
case "rating":
var _arr = [], colors = randomFromInterval(0, num - 1);
for(var i = 0; i < colors; i++){
_arr[i] = get_random_color();
}
obj.colors = _arr;
obj.text = _arr[1];
break;
case "level":
obj.text = randomFromInterval(0, 100);
obj.valid = {
"0-40" : get_random_color(),
"40-50" : get_random_color(),
"50-100" : get_random_color()
}
break;
}
arr[j] = obj;
}
data[i] = arr;
}
console.log(data);
您在循环中使用了两次i
,第一次在外循环中,第二次在"rating"下的循环中,将i
设置为颜色的数量,我认为不到 500。
因此,如果在前几个对象中有一个角色为"rating"的对象,i
永远不会达到 500,从而以无限循环结束。
你有这个内部循环:
for(var i = 0; i < colors; i++){
arr[i] = get_random_color();
}
它重置了 i 的值,弄乱了外部循环。您可以通过在此处选择另一个名称而不是 i 来解决此问题。
相关文章:
- 使用滚动溢出-x进行无限循环
- 从index.html调用函数,该函数无限循环
- 使用jQuery无限循环播放HTML页面幻灯片
- Grunt任务没有加载,获得无限循环
- 如何在不进入无限循环的情况下将网站重定向到Facebook画布URL
- Backbone+RequireJS+Mediator模式导致视图逻辑短路和无限循环
- jQuery无限循环,动画化许多项目
- 如何避免试图用php+jquery显示php起始页的无限循环
- 6502仿真增强型基本无限循环$C000至$E0ED
- Angular ngRoute导致无限循环和堆栈溢出
- jquery在无限循环中运行
- Bxslider预加载程序在没有图像的情况下以无限循环运行
- 在运行 5 次时重置无限循环
- 希望Javascript无限循环运行
- JS代码运行到无限循环
- Gulp 任务在无限循环中运行
- 如何使动画在无限循环中运行
- 为什么console.log运行无限循环,直到溢出,和文档.不写
- 这个使用javascript的css3动画的无限循环不能正常工作,并且运行时有延迟
- 为什么我的角脚本运行一个无限循环