为什么javascript中存在标签?
var i = 0;
usefulLabel://why do I exist?
while(i <= 10){
document.writeln(i);
i++;
if(i > 5)
break;// usefulLabel;
}
上面的代码似乎根本不需要标签(它可以使用或不使用注释标签名称)。考虑到道格拉斯·克罗克福德并没有完全谴责他们:
声明标签是可选的。只有这些陈述应该是 标记:while,do,for,switch。
它们是否被视为实施的良好做法?对我来说,这些东西看起来与某些语言中臭名昭着的goto语句非常接近。
答案 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一样。