admin管理员组

文章数量:1424881

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?

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?

Share Improve this question edited Jun 26, 2012 at 7:37 JJJ 33.2k20 gold badges94 silver badges103 bronze badges asked Jun 26, 2012 at 7:35 Fawkes5Fawkes5 1,0213 gold badges9 silver badges12 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

I'd never seen labelled while loops before, but according to this http://james.padolsey./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 e.g. (example taken from the link)

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

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 pletely 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.

本文标签: statementsLabeled while loops in JavascriptStack Overflow