简体   繁体   中英

Labeled while loops in Javascript

My confusion stems from this example labelled statement:

myLoop : while (expression) {
    continue myLoop;
}

and the syntax of a general labelled statement:

identifier : statement

What exactly is being labelled in the example?

isn't the whole block of code:

while (expression) 
    statement

considered a single statement? Or is while(expression) itself a statement? Or is while a statement by itself?

Why isn't the entire:

while (expression) {
    continue myLoop;
} 

labelled under myLoop and not just while(expression) . Or is that even happening?

What's being labelled isn't a block of code, it's just a particular line. So wherever your label myLoop is, writing continue myLoop is like saying "jump to that spot and continue execution".

But actually, in this example:

myLoop : while (expression) {
    continue myLoop;
}

The use of the label is completely redundant. You would write it as follows and the effect would be identical:

while (expression) {
    continue;
}

That's because continue by default means, go to the beginning of the loop's next iteration.

I'd never seen labelled while loops before, but according to this http://james.padolsey.com/javascript/looping-in-javascript/ it is the whole while loop that is being labelled.

The use for it is to break out of a particular loop, handy with loops-in-loops eg (example taken from the link)

myOuterLoop : while (condition) {
 myInnerLoop : while (condition) {
    if (whatever) {
        break myOuterLoop;
    }
    if (whatever2) {
        break; // Same as 'break myInnerLoop;'
    }
 }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM