2015-12-18 32 views
5

JavaScript'te "break tanımlayıcısı" için kullanım durumu nedir?

BreakStatement : 
    break ; 
    break [no LineTerminator here] Identifier ; 

o zaman programın Tanıtıcı bir kapatmakta olan etiket kümesine görünmüyor opsiyonel Tanıtıcınıza ile break ifadesinin içerdiği

gider goes

Spec (ama işlev sınırlarını geçmemesi).

Return (break, empty, Identifier). 

bu kanlı yeryüzünde ne anlama gelir şu şekildedir: bir Identifier ile

...

A BreakStatement değerlendirilir? Bu açıklamada olarak herhangi bir yere yerleştirilebilir

// ... 
mylabel: 
// ... 

:

+0

İlgili: http://stackoverflow.com/questions/17752565/breaking-out-of-an-outer-loop-from-an-inner-loop-in-javascript – Barmar

cevap

4

bir etiket böyle bir şeydir.

Çoklu iç içe geçmiş for döngüleri olduğunda break/continue için kullanışlıdır.

olan kullanımının bir örneği:

var i, j; 

loop1: 
for (i = 0; i < 3; i++) {  //The first for statement is labeled "loop1" 
    loop2: 
    for (j = 0; j < 3; j++) { //The second for statement is labeled "loop2" 
     if (i === 1 && j === 1) { 
     continue loop1; 
     } 
     console.log("i = " + i + ", j = " + j); 
    } 
} 

// Output is: 
// "i = 0, j = 0" 
// "i = 0, j = 1" 
// "i = 0, j = 2" 
// "i = 1, j = 0" 
// "i = 2, j = 0" 
// "i = 2, j = 1" 
// "i = 2, j = 2" 
// Notice how it skips both "i = 1, j = 1" and "i = 1, j = 2" 

Source. Eğer MDN üzerinde bakarsanız gördüğünüz gibi

2

, örnekleri çoğaltmak

outer_block: { 
    inner_block: { 
     console.log('1'); 
     break outer_block; // breaks out of both inner_block and outer_block 
     console.log(':-('); // skipped 
    } 
    console.log('2'); // skipped 
} 

var, daha yüksek İlk hemen üst açıklamada daha zincirinde yukarı bir etiket seçer bir tanımlayıcı ile break can.

bir tanımlayıcı olmadan varsayılan eylem mola dışında sahip olduğunu indentifiers dayalı etiketleri kıramazsak,

outer_block: { 
    inner_block: { 
     console.log('1'); 
     break; // breaks out of the inner_block only 
     console.log(':-('); // skipped 
    } 
    console.log('2'); // still executed, does not break 
} 

mola etiketin içinde olmak zorunda olacaktır.

İlgili konular