为什么标签存在?

时间:2011-10-24 21:23:42

标签: javascript

为什么javascript中存在标签?

var i = 0;

usefulLabel://why do I exist?
while(i <= 10){
    document.writeln(i);
    i++;
    if(i > 5)
        break;// usefulLabel;
}

上面的代码似乎根本不需要标签(它可以使用或不使用注释标签名称)。考虑到道格拉斯·克罗克福德并没有完全谴责他们:

Labels

  

声明标签是可选的。只有这些陈述应该是   标记:while,do,for,switch。

它们是否被视为实施的良好做法?对我来说,这些东西看起来与某些语言中臭名昭着的goto语句非常接近。

3 个答案:

答案 0 :(得分:8)

如果要从嵌套循环中突破最外层循环,则需要一个标签 如果你最终需要它,你应该考虑重构代码以使其更简单。 (虽然这并不总是可能的)

答案 1 :(得分:2)

是的,它们存在于GOTO和SWITCH语句中。我基本上看到它们只用于其他任何东西,并且永远不会考虑为了它的乐趣标记一段代码..

答案 2 :(得分:0)

您提供的代码示例根本不使用该标签,因为它未在任何地方引用。

在此处阅读有关标签的更多信息:

https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Statements#label_Statement

以下是打破循环的示例:

var x = 0;
var z = 0
labelCancelLoops: while (true) {
    console.log("Outer loops: " + x);
    x += 1;
    z = 1;
    while (true) {
        console.log("Inner loops: " + z);
        z += 1;
        if (z === 10 && x === 10) {
            break labelCancelLoops;
        } else if (z === 10) {
            break;
        }
    }
}

我建议尽量使用标签,因为它们会令人困惑地阅读并遵循执行流程。就像GOTO一样。