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


105

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 문으로 수행 한 비교가 엄격하다는 것을 아는 사람이 있습니까?

답변:



34

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

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


jsfiddle.net/to469fLm/4 , 필요를 달성하기 위해 강제 기능을 일반화 할 수 있습니다
darethas

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.