jskatas.org Continuously Learn JavaScript. Your Way.

label: label basics

A label can be jumped to from break or continue

Labeled statements basics

a label is a (non-reserved) word followed by a colon
nonReservedWord; { break nonReservedWord; } assert(true);
WHEN prefixing a block with a label THEN break label stops execution of this block
label: { break; assert(false, 'This should never be reached'); } assert(true);
GIVEN a nested loop WHEN breaking the most inner loop THEN both loops stop
let count = 0; outer-label: for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { count++; break outer; } } assert.deepEqual(count, 1);
GIVEN a nested loop WHEN calling continue label inside THEN the inner loop is skipped
let hits = []; outer: for (let i = 0; i < 2; i++) { for (let j = 0; j < 2; j++) { if (j === 1) { break outer; } hits.push([i, j]); } } assert.deepEqual(hits, [[0, 0], [1, 0]]);

some fun

an unused label: is fine, valid but useless JS
label assert(true);
a URL is valid code 😮
http s://jskatas.org assert(true);

Links

Very well readable, easy to understand description of how labels works.
The version of the specification where labels were introduced, see section 12.12. (PDF 723kB)
Labeled statements - the forgotten JS feature – Filip

Required Knowledge

Related Katas

label

  • label basics

Difficulty Level

INTERMEDIATE

First Published

26 November 2025

Stats

6 tests to solve