JavaScript createElement:用于循环冻结;而循环则不是。为什么?

JavaScript createElement:用于循环冻结;而循环则不是。为什么?,javascript,for-loop,while-loop,ubuntu-12.04,createelement,Javascript,For Loop,While Loop,Ubuntu 12.04,Createelement,这是一个完全出于好奇的问题,因为它使我困惑。我在Ubuntu 12.04上,我在Firefox 19.0.2和Chromium 25.0.1364.160上试过这个。查看以下两段JavaScript代码(这是一段较大代码的摘录): var Div=document.createElement('Div'); 风险价值限额=5; var i=0; while(我能在jsfiddle中发布完整的代码吗?anImage定义在哪里?显然缺少var(var i=0;)中的var,但它与给定的代码没有多大区

这是一个完全出于好奇的问题,因为它使我困惑。我在Ubuntu 12.04上,我在Firefox 19.0.2和Chromium 25.0.1364.160上试过这个。查看以下两段JavaScript代码(这是一段较大代码的摘录):

var Div=document.createElement('Div');
风险价值限额=5;
var i=0;

while(我能在jsfiddle中发布完整的代码吗?
anImage
定义在哪里?显然缺少
var
(var i=0;
)中的
var
,但它与给定的代码没有多大区别(除非在严格模式下)。你能在or中重现这个问题吗?你可以添加
console.log(i)
在循环中找出发生了什么,但是考虑到上面的代码,我看不出它应该冻结的原因。首先感谢您的评论。我找到了答案,这是一个有趣的发现。我忘记了I前面的“var”,即创建一个全局变量,对吗?然而,它是for循环中的for循环(我没有看到它,因为我把它移到了另一个函数中)。所以一定有一些计数问题。使用var本地化解决了这个问题。我猜@Fabricio Matte给了我一个提示,我需要解决这个特定的谜题,所以感谢巴迪:)关于“杰克、特罗特、格林先生、朱西和詹迪”:我想,这不是本地化的:D这里的take home消息,孩子们。不要为嵌套的for循环创建相同的全局变量:P
var Div = document.createElement('div');
var limit = 5;

var i = 0;
while (i<limit){
    var img = document.createElement('img');
    img.setAttribute('src', anImage);
    Div.appendChild(img);
    i++;
}
return Div;
var Div = document.createElement('div');
var limit = 5;

for (i=0; i<limit; i++){
    var img = document.createElement('img');
    img.setAttribute('src', anImage);
    Div.appendChild(img);
}
return Div;