2012-01-09 6 views
8

セクション12.12のECMAScript 5.1 specによれば、どのステートメントにもラベルを付けることができます。簡単なテストでは、ブラウザはステートメントの前にラベルを受け入れました。この仕様では、ラベルはbreakcontinueステートメントで排他的に使用されているとも言われており、クイックテストでは、それらが参照するラベルがそれらを含むループを参照しないと "未定義ラベル"ループではないステートメントでラベルをどのように使用しますか?

私の質問は次のとおりです。ループに使用されていないステートメントのラベルは何ですか? breakまたはcontinueがループではないラベルを参照できる状況がありますか?

+2

ドゥープではありませんが、興味深い、関連した、そして最近の質問です。いくつかの答えは多少関連しています:http://stackoverflow.com/questions/8782877/using-colons-in-javascript-variable-names- eg-abc – ziesemer

+1

haha​​、ええ、私はちょうどそれを読んでいました。それは私にこれを尋ねるよう促した。 –

答えて

6

どうやら休憩や文を続けるには任意のステートメントの中で使用することができます。このようなことは、法的になる

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

た場合:show_alertは()のみ、と呼ばれている

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

「hi」アラートが表示されます。

私が知る限り、これはコードスタイリング以外の{}コードブロックの唯一の使用方法です。 (それについての質問があり、可読性以外は何も出てこないが、今は見つからない...)

+0

http://stackoverflow.com/questions/8735841/whats-the-purpose-of-lonely-code-blocks-in-javascript/8735997#8735997 –

+0

これは、ありがとう@cwolves – Jeff

+0

すばらしい答え、ありがとう。しかし、ブロックされていない文(なぜなら、 'start:var a = 1;')のラベル付けができる理由を説明していないので、完全なものとして受け入れているわけではありません。 –

0

はい、どのステートメントにもラベルを付けることができます。ステートメントを中括弧で囲むだけでよい、つまり

{start:var a=1;} 

これは未定義のラベルエラーを表示しません。

関連する問題