JS:Lable

Spacious_kitchen·2021년 9월 15일
0

레이블은 흐름 제어를 하는 방법 중 하나이다.
레이블은 파싱 중에 에러를 검사하기 때문에 런타임 시에 흐름 제어하는 if 보다 안전하다.
따라서 함수나 if구문 말고 lable을 활용하기도 한다.

label :
   statement

Lable Scope

레이블을 명확하게 동작하려면(즉, range를 결정하는 방법은 )
스코프를 선언, iterator, switch를 써서 제어해야 할 수 있다.

Auto Lable

for(let i=0;i <10;i++){
    if(i==5) break;
}

이와 같은 경우에 실제로 자바스크립트의 엔진에 의해서

p34:
for(let i=0;i <10;i++){
    if(i==5) break p34;
}

iterator나 switch을 통해 Auto Label이 생긴다.
이를 undefined Named Label이라고 한다.

Lable 주석

p34:
for(let i=0;i <10;i++){
    if(i==5) break p34;
}
console.log("end");//주석1
console.log("000000000000000000000000");//주석1
console.log("00000000000000000000000000000000");//주석3

이럴 경우 주석을 읽기 힘들다.

p34:
for(let i=0;i <10;i++){
    if(i==5) break p34;
}
a:console.log("end");//주석1
b:console.log("000000000000000000000000");//주석1
c:console.log("00000000000000000000000000000000");//주석3

병행 레이블을 효과 없기 때문에 이렇게 주석으로 사용 하기도 한다.

special Label -switch

특별한 동적인 label을 만들어준다. 따라서 런타임 중에 해석된다.
switch는 case와 default 레이블만 쓸수 있도록 한다.
이를 자바스크립트의 엔진의 해석을 돕기 위해서 이다.

  • 값에 대한 라우팅
var a=1
p17:
switch(a){
    default: console.log("c");
    case a: console.log("a")  break p17;
    case false: console.log("b");
}

값에 대한 평가를 기준으로 lable을 작동한다. a라는 값에 대해서 흐름을 제어해준다.

  • 조건을 무력화 시킨경우
switch(true){
    case network(): console.log("a")  break p17;
    case localCache(): console.log("b");
    default: //안내문 
}

책임을 연쇄적으로 전가 시킨 경우, 값을 무력화 시킨다음 함수의 반환 값에 따라 label처리를 하도록 한다.

profile
이왕 사는거 넓은 주방을 가지는 성공하는 삶을 살고 싶습니다.

0개의 댓글