javascript循环奇怪的执行

时间:2012-02-24 07:51:04

标签: javascript function loops

设置循环以在地图上设置标记:

for (i = 0; i <= 6; i++) {
    _coord = prj_markers[i];
    alert(i);
    instance.set_marker(instance, provider, i, _coord, divBlock);
}

此代码警告“0”一次并执行instance.set_marker(因为它可见)。

执行后设置警告instance.set_marker:

for (i = 0; i <= 6; i++) {
    _coord = prj_markers[i];        
    instance.set_marker(instance, provider, i, _coord, divBlock);
    alert(i);
}

警告“6”ONCE,但必须提醒六次。发生了什么事?

2 个答案:

答案 0 :(得分:0)

尝试在for语句的开头以这种方式声明初始变量。

for (var i = 0; ...

答案 1 :(得分:0)

for循环使用i作为全局变量,所以如果你的instance.set_marker函数也使用i作为全局变量并将其值设置为大于6的循环将退出。

尝试更改变量名称,并使用var语句将其设为局部变量:

for (var SomeOtherName = 0; SomeOtherName<= 6; SomeOtherName++) {
    _coord = prj_markers[SomeOtherName];        
    instance.set_marker(instance, provider, SomeOtherName, _coord, divBlock);
    alert(SomeOtherName);
}