JavaScript代码在“之后中断”;至于;环

JavaScript代码在“之后中断”;至于;环,javascript,for-loop,Javascript,For Loop,我写了一个简单的地理定位代码,由于某种原因,它会中断。。。请参考下面引用的代码部分中的注释,其中显示了哪里一切正常,从哪里开始出现故障 var city = "Unknown"; var area = "Unknown"; var lr = w.results.length; for (var n = 0; n <= lr; n++) { var la = w.results[n].address_components.length; for (var m = 0; m &

我写了一个简单的地理定位代码,由于某种原因,它会中断。。。请参考下面引用的代码部分中的注释,其中显示了哪里一切正常,从哪里开始出现故障

var city = "Unknown";
var area = "Unknown";
var lr = w.results.length;
for (var n = 0; n <= lr; n++)
{
    var la = w.results[n].address_components.length;
    for (var m = 0; m <= la; m++)
    {
        if (w.results[n].address_components[m].types[0] == "locality")
        {
            city = w.results[n].address_components[m].long_name;
            break;
        }
        else if (w.results[n].address_components[m].types[0] == "administrative_area_level_2")
        {
            area = w.results[n].address_components[m].long_name;
            break;
        }
    } //Whatever I put here, still works
} //Now it breaks, and everything below never runs
if (city == "Unknown")
{
    city = area;
}
var city=“未知”;
var area=“未知”;
var lr=w.results.length;

for(var n=0;n您永远不会离开for循环,这就是它不起作用的原因

您可以在第二个
for
循环下面的
if(condition){break;}
下面使用。
只需找到要用作条件的内容。

您可以使用标签来打破嵌套for循环。 ()

另一种方法是在中断之前将m变量设置为lr+1,但在继续之前仍将运行外部循环的其余部分一次

var city = "Unknown";
var area = "Unknown";
var lr = w.results.length;
outer:
for (var n = 0; n <= lr; n++)
{
    var la = w.results[n].address_components.length;
inner:
    for (var m = 0; m <= la; m++)
    {
        if (w.results[n].address_components[m].types[0] == "locality")
        {
            city = w.results[n].address_components[m].long_name;
            break outer;
        }
        else if (w.results[n].address_components[m].types[0] == "administrative_area_level_2")
        {
            area = w.results[n].address_components[m].long_name;
            break outer;
        }
    } //Whatever I put here, still works
} //Now it breaks, and everything below never runs
if (city == "Unknown")
{
    city = area;
}
var city=“未知”;
var area=“未知”;
var lr=w.results.length;
外部:

对于(var n=0;n你能创建一个fiddle吗?或者至少向我们提供w.results的值。你应该检查变量la是否未定义或0。Ruben Karapetyan,非常感谢!!!你说哪个for循环永远不会被留下?为什么会这样?第一个for循环永远不会被留下,所以它会反复运行,这就是代码的原因打破。