这里有一段代码:
var alldivs = document.getElementsByTagName('div'),
len = alldivs.length;
for(var i = 0; i < len; i++) {
document.body.appendChild(document.createElement('div'));
}
为什么会造成无限循环?
初始化变量alldivs时,页面中的div元素已经保存到alldivs这个变量中,循环执行前变量len也已经被初始化了。执行的循环仅仅是创建div元素,并没有重新初始化len,为什么会造成无限循环呢?
来,给你制造一段会无限循环的代码:
唯一的不同是 判断循环的时候使用的是
alldivs.length
,而不是你拿出来的len
.唯二的不同是,你要保证你的body中存在div,否则
alldivs.length
是0,不会触发for
循环你已经声明并复制
len
了,所以是不会变的,len
是固定的.而
alldivs.lengt
则根据div数量变化