자 바스 크 립 트 자동 분점 보완 구덩이

2105 단어
자동 분점 보완 (auto semicolon 삽입, 약칭 ASI)
자 바스 크 립 트 에서 줄 끝의 번 호 는 자동 삽입 메커니즘 이 있 습 니 다. 줄 이 새로 생 겼 고 이 새로운 줄 이 현재 문장 에 추가 되 지 않 을 때 자동 으로 분 호 를 추가 합 니 다.그러나 각 표현 식 (Expression) 과 문장 (statement) 을 구분 하지 않 고 수 동 으로 분 호 를 입력 하면 대부분의 분 호 는 쓸모 가 없다.
상하 문 해석 오류 가 발생 했 을 때 분점 이 필요 합 니 다
이러한 문 제 를 일 으 킬 수 있 는 token 은 6 개 입 니 다. 괄호, 네모 난 괄호, 정규 로 시작 하 는 슬 래 쉬, 플러스, 마이너스, 문자열 템 플 릿 의 반 따옴표 입 니 다. 이 6 개의 문 자 를 한 줄 로 시작 할 때 이전 줄 에서 자동 으로 점 수 를 보완 하지 않 고 해석 에 오류 가 발생 하지 않 습 니 다.
a = b
(c + d).toString()

해석
a = b(c + d).toString()

즉 () 함수 b 를 호출 하 는 것 으로 간주 되 며 본의 와 맞지 않 습 니 다. 따라서 이 6 개의 문 자 를 한 줄 로 시작 하 는 것 을 피해 야 합 니 다. 피 할 수 없 으 면 줄 의 첫 번 째 에 점 수 를 추가 하 는 것 을 선택 할 수 있 습 니 다.
절대 금 지 된 줄 끝 문자 (restricted productions)
줄 을 바 꾸 지 말 아야 할 곳 에서 줄 을 바 꾸 면 자동 으로 분 호 를 삽입 합 니 다.
     
         [     ] ++
         [     ] --
Continue   
   continue [     ]    ? ;
Break   
   break [     ]    ? ;
Return   
   return [     ]    ? ;
Throw   
   throw [     ]    ? ;

[줄 끝 없 음] 줄 바 꾸 기 를 금지 합 니 다. 접미사 표현 식 에 대해 서 는 이전 줄 의 값 을 수정 하지 않 는 것 이 원칙 입 니 다. continue, break, return, throw 에 대해 서 는 인자 가 없 으 면 다음 줄 을 가리 키 지 않 습 니 다.
a
++
b

해석
a;
++b

return 과 throw 에 대하 여
function test() {
 return
 3
}
test()

출력 결 과 는 실제 undefined 입 니 다. 위 코드 가 해석 되 었 기 때 문 입 니 다.
function test() {
 return;
 3
}
test()

break 와 contine 에 대하 여
var num = 0
outermost: 
for(let i = 0, j; i < 100; i++) {
 for(j = 0; j < 100; j++) {
   if(i === 50 && j===50 ) {
     break
     outermost
   }
   num++
 }
}
console.log(num)

이 때 break 와 label 표시 자 사이 에 줄 바 꿈 문자 가 있 습 니 다. 이 때 break 후 자동 으로 점 수 를 추가 합 니 다. outermost 는 작 동 하지 않 습 니 다. 출력 결 과 는 95 입 니 다. break 와 label 표시 자 를 같은 줄 인 break outermost 에 두 었 을 때 출력 결 과 는 55 입 니 다.
따라서 필 자 는 좋 은 인 코딩 습관 을 가지 고 ASI 의 규칙 을 파악 하고 분 호 는 필요 한 곳 에 만 추가 하면 된다 고 제안 했다.
참고 문장
유우 계 가 알 고 있 는 대답 자 바스 크 립 트 의 자동 분점 삽입 (ASI): 미 도

좋은 웹페이지 즐겨찾기