[javascript] JavaScript switch 문에서 엄격한 비교를 가정하는 것이 안전합니까?

boolean false또는 정수 (0 포함) 일 수있는 변수가 있습니다 . 다음과 같은 switch 문에 넣고 싶습니다.

switch(my_var){
    case 0:
         // Do something
         break;
    case 1:
         // Do something else
         break;
    case false:
         // Some other code
}

구글 크롬에서 내 테스트에서 완벽하게 작동하는 것 같다,하지만 난 경우 일부 브라우저에서 것을 두려워하기 때문에 사용하기 조금 긴장 my_var이다 false, 그것은 이후 첫 번째 경우를 실행할 수 있습니다 0 == false.

나는 switch 문이 엄격한 비교를 사용할 것이라고 말하는 JavaScript의 공식이 있는지 궁금합니다 0 !== false.하지만 직접 찾을 수 없으며 이것이 다른 JavaScript 엔진에서 잘 작동하는지 확실하지 않습니다. switch 문으로 수행 한 비교가 엄격하다는 것을 아는 사람이 있습니까?



답변

에서 봐 ECMA 262, 섹션 12.11 , 두 번째 알고리즘, 4.c.

씨. 입력이 === 연산자에 의해 정의 된 clauseSelector와 같으면 …


답변

http://qfox.nl/notes/110이 귀하의 질문에 답변합니다. (이 사람은 JavaScript의 핵심에 대해 많이 알고 있습니다.)

Javascript의 스위치는 엄격한 유형 검사 (===)를 사용합니다. 따라서 몇 가지 wtfjs를 방지하는 강제에 대해 걱정할 필요가 없습니다. :). 반면에 당신이 강압을 믿고 있다면 강요 할 수 없기 때문에 운이 좋지 않습니다.


답변

네, switch“엄격한 비교를 사용합니다 ===.”

출처 : 스위치-JavaScript | MDN


답변