Q:

lbl: break lbl; in JavaScript

Apparently, lbl: break lbl; is perfectly valid in JavaScript (but not lbl: continue lbl;). 
Is there any obscure use for this construct?

A:

You can put a label before any statment. continue is only allowed inside loops (for, for-in, while, do-while) as already said by boltclock in the comments to the question. break can be used inside loops, switch-statements, and any statement (as already commented by rob-w).
lbl: break lbl;

The above statement is valid. As already commented by frederic-hamidi "it breaks out of itself" and isn't very useful by itself, but see example below of how it could be useful.
lbl: continue lbl;

The above statement is invalid because it isn't a loop.
An example of how break label could be used in a block:
function test() {
  var x='';
  lb1: {
    x+='1';
    if(x.length >2) break lb1;
    x+='2';
  }
  lb2: {
    x+='3';
    if(x.length >2) break lb2; //Can't break to lb1 because it isn't inside this block
    x+='4';
  }
  console.log(x);
}

test();

Outputs:

123

This is an example of how break label could be used inside a loop:
outer: for(var idxo=0; idxo < 5;++idxo) {
  inner: for(var idxi=0; idxi < 5;++idxi) {
    if (idxi==3) break outer;
    console.log(idxo,idxi);
  }
}

Outputs:

0 0, 0 1, 0 2

This is an example of how continue label could be used inside a loop:
outer: for(var idxo=0; idxo < 5;++idxo) {
  inner: for(var idxi=0; idxi < 5;++idxi) {
    if (idxi==3) continue outer;
    console.log(idxo,idxi);
  }
}

Outputs:

0 0, 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, 2 2, 3 0, 3 1, 3 2, 4 0, 4 1, 4 2

ECMA262:5 12.12

12.12 Labelled Statements
Syntax
LabelledStatement :
Identifier : Statement
Semantics
A Statement may be prefixed by a label. Labelled statements are only used in conjunction with labelled break and continue statements. ECMAScript has no goto statement.
An ECMAScript program is considered syntactically incorrect if it contains a LabelledStatement that is enclosed by a LabelledStatement with the same Identifier as label. This does not apply to labels appearing within the body of a FunctionDeclaration that is nested, directly or indirectly, within a labelled statement.
The production Identifier : Statement is evaluated by adding Identifier to the label set of Statement and then evaluating Statement. If the LabelledStatement itself has a non-empty label set, these labels are also added to the label set of Statement before evaluating it. If the result of evaluating Statement is (break, V, L) where L is equal to Identifier, the production results in (normal, V, empty).
Prior to the evaluation of a LabelledStatement, the contained Statement is regarded as possessing an empty label set, unless it is an IterationStatement or a SwitchStatement, in which case it is regarded as possessing a label set consisting of the single element, empty.

