2012-01-09 13 views
8

ECMAScript 5.1 spec, bölüm 12.12'ye göre, herhangi bir ifade etiketlenebilir - ve kısa bir testte, tarayıcım herhangi bir beyandan önce bir etiketi kabul etti. Bu özellik ayrıca, etiketlerin yalnızca break ve continue deyimleriyle kullanıldığını ve hızlı bir sınamanın, başvuruda bulundukları etiketin onları içeren bir döngüye atıfta bulunmaması durumunda, bu ifadelerin "tanımsız etiket" hatası verdiklerini belirtir.Etiketler, döngü olmayan ifadelerle nasıl kullanılır?

Bu yüzden sorum şu: Döngü kullanılmayan ifadeler için etiket nedir? break veya continue'un döngü olmayan bir etikete başvurabileceği bazı içerik var mı?

+2

Değil dupe, ancak bir ilgili, ilginç ve son soru - bazı yanıtlar şekilde alakalı olmak: http://stackoverflow.com/questions/8782877/using-colons-in-javascript-variable-names- eg-abc – ziesemer

+1

haha, evet, sadece okuyordum. Bunu sormamı sağlayan şey buydu. –

cevap

6

Görünüşe molası ve ifadeleri devam herhangi ifadesi içindeki kullanılabilir:

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

hangi böyle vaka şeyler yasal hale gelir:

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

show_alert(), yalnızca çağrıldığında "merhaba" uyarısı gösterilir.

Bildiğim kadarıyla, bu kod tanıtımı dışındaki kod bloklarının tek kullanımıdır. (Burada bunun hakkında bir soru vardı ve kimse okunabilirlik dışında bir şeyle gelemedi, ama şimdi bulamıyorum ...)

+0

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

+0

Bu, teşekkürler @cwolves – Jeff

+0

Harika cevap, teşekkürler. Ama ben tam olarak kabul etmiyorum (henüz), çünkü neden blok olmayan deyimleri (örneğin: start: var a = 1; ') etiketleyebilirsiniz açıklamıyor. –

0

Evet, herhangi bir deyimi etiketleyebilirsiniz. Sadece, küme parantezi içinde ifadeyi koymak yani

{start:var a=1;} 

bu tanımsız etiket hatası göstermez gerekir.

İlgili konular