【问题标题】:javascript loop strange executejavascript循环奇怪执行
【发布时间】:2012-02-24 07:51:04
【问题描述】:

有一个循环在地图上设置标记:

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”一次,但必须警报六次。怎么回事?

【问题讨论】:

  • 我们需要更多代码。 instance.set_marker 中发生了什么?
  • 如果您将两个警报都放在代码中会怎样?
  • instance.set_marker里面一定有东西,它的code是什么?
  • WTF问题是这样的,麻烦贴完整的相关代码

标签: javascript function loops


【解决方案1】:

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

for (var i = 0; ...

【讨论】:

    【解决方案2】:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      相关资源
      最近更新 更多