레이블(Label)
어떤 문장에 레이블을 붙이면 프로그램의 다른 곳에서 그 식별자를 통해 문장을 참고할 수 있다. 레이블은 어떤 문장에라도 붙일 수 있지만, 루프나 조건문 같이 몸체가 있는 문장에 쓰는 편이 유용하다.
식별자: 문장
레이블은 범위는 레이블이 적용될 문장과, 그 하위 문장(substatement)들에서만 유용하다.
break혹은 continue와 함께 사용하는 예
var i,j;
loop1:
for (i = 0; i < 3; i++) {
loop2:
for (j = 0; j < 3; j++) {
if(i === 1 && j === 1) break loop1;
console.log(`i = ${i} / j = ${j}`);
}
}
i = 0 / j = 0
i = 0 / j = 1
i = 0 / j = 2
i = 1 / j = 0
break
키워드 뒤에 레이블 loop1
을 생략했다면, 변수 j
를 테스트로 하는 루프만 종료됐을 것이다. ( 같은 원리로 break
키워드 뒤에 레이블 loop2
를 함께쓰면 이와 동일하게 작동한다.)
function
ECMA Script2015에서 레이블을 붙인 함수선언문은 non-strict 모드에서만 사용 가능하다. (굳이 쓸일도 없지만 안쓰는게 좋겠다.)
'use strict';
L: function F() {}
// SyntaxError: functions cannot be labelled