2015-12-18 7 views
5

कल्पना goesजावास्क्रिप्ट में "ब्रेक आइडेंटिफायर" के लिए उपयोग केस क्या है?

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

तो यह जाता है

कार्यक्रम वैकल्पिक पहचानकर्ता, जहां पहचानकर्ता एक संलग्न के लेबल सेट में प्रकट नहीं होता है के साथ एक को तोड़ने बयान (लेकिन कार्य सीमाओं को पार नहीं करना) वक्तव्य।

Return (break, empty, Identifier). 

इस खूनी पृथ्वी पर क्या मतलब है:

...

एक BreakStatement एक पहचानकर्ता के साथ इस प्रकार के रूप में मूल्यांकन किया जाता है?

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

यह एक बयान के रूप में कहीं भी रखा जा सकता है:

+0

संबंधित: http://stackoverflow.com/questions/17752565/breaking-out-of-an-outer-loop-from-an-inner-loop-in-javascript – Barmar

उत्तर

4

एक लेबल कुछ इस तरह है।

यह break/continue के लिए उपयोगी है जब कई नेस्टेड for लूप होते हैं।

इसके उपयोग का एक उदाहरण:

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

2

आप MDN पर देखें, तो वहाँ उदाहरण

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 
} 

के रूप में आप देख सकते हैं, आप कर सकते हैं एक पहचानकर्ता है कि एक लेबल सिर्फ पहली तत्काल माता पिता के बयान से श्रृंखला में उच्च ऊपर का चयन करता है के साथ break

एक पहचानकर्ता के बिना डिफ़ॉल्ट कार्रवाई

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 
} 

तोड़ लेबल के भीतर हो गया है हो सकता है, आप indentifiers पर आधारित है कि तोड़ने के बाहर है लेबल नहीं तोड़ सकते हैं।

संबंधित मुद्दे