javascript中label:{}这种写法常用吗?



 js


 var x, y;

outer: for (x = 0; x < 10; ++x) {
    for (y = 0; y < 10; ++y) {
       if (checkSomething(x, y)) {
           break outer;
       }
    }
}

ecmascript JavaScript

弑神D小亞 10 years, 7 months ago

不常用。但是在处理嵌套循环的时候这个东西还是蛮方便的。

殒落的羽翼 answered 10 years, 7 months ago

看样子 javascript 的这个语法和 java 差不多,可以参考下 《带标签的 break 和 continue (java)》

不过最好还是不要用标签,通过其它办法来实现你所需要的,比如拆分函数


 javascript


 function inner(x) {
    for (y = 0; y < 10; ++y) {
       if (checkSomething(x, y)) {
           return true
       }
    }
    return false
}

for (x = 0; x < 10; ++x) {
    if (inner(x)) {
        break
    }
}

如果嵌套代码比较复杂,可以采用 throw


 javascript


 function inner(x) {
    for (y = 0; y < 10; ++y) {
       if (checkSomething(x, y)) {
           throw "done"
       }
    }
}

try {
    for (x = 0; x < 10; ++x) {
        inner(x)
    }
} catch (e) {
    if (e !== "done") {
        throw e
    }
}

腐腐腐腐腐 answered 10 years, 7 months ago

Your Answer