标签如何与不是循环的语句一起使用?

时间:2012-01-09 01:34:22

标签: javascript label

根据ECMAScript 5.1 spec第12.12节,可以标记任何声明 - 在简短的测试中,我的浏览器在任何声明之前接受了标签。该规范还声明标签仅与breakcontinue语句一起使用,并且快速测试显示,如果它们引用的标签不引用循环,则这些语句会引发“未定义标签”错误包含它们。

所以我的问题是:什么是非循环用语句的标签?是否有一些上下文breakcontinue可以引用不是循环的标签?

2 个答案:

答案 0 :(得分:6)

显然,break和continue语句可以在任何语句中使用:

http://docstore.mik.ua/orelly/webprog/jscript/ch06_11.htm

在这种情况下,这样的事情变得合法:

function show_alert()
{
    label:
    {
        break label;
        alert("Hello! I am an alert box!");
    }
    alert("hi");
}

调用show_alert()时,只显示“hi”警告。

据我所知,这是{}代码块的唯一用途,而不是代码样式。 (这里有一个问题,没有人可以提出除可读性以外的任何东西,但我现在找不到它了......)

答案 1 :(得分:0)

是的,您可以标记任何声明。你只需要将语句放在花括号中,即

{start:var a=1;}

这不会显示未定义的标签错误。