2016-08-07 1 views
1

변수가 condition이라고 가정 해 봅시다. 나는 엄격한 boolean 값으로 변수에 저장할 싶은 경우에, 나는 같은 것을 할 :if에 변수 사용과 이중 느낌표 사이에 어떤 차이가 있습니까?

var logicalCondition = !!condition; 

첫 번째 느낌표가 condition을 부정하고 boolean로 값을 변환합니다. 두 번째 느낌표는 부정 된 엄격한 부울 값을 다시 무효화합니다. condition이 truey 인 경우 결과는 true이고 condition이 위식 인 경우 false입니다. If 조건은 truey를 true 및 falsy를 false으로 변환하는 것으로 알려져 있습니다. 우리는 다음과 같은 두 덩어리

//first 
if (condition) { 
    //do something 
} 

//second 
if (!!condition) { 
    //do something 
} 

에서 살펴한다면, 우리가 관찰 할 수있는 첫 번째 차이는 우리가 if에 손 전에 두 번째 경우에 우리는 엄격한 boolean 값으로 값을 변환이다. 두 번째 차이점이 있습니까, 아니면이 전환이 불필요한가요?

+1

차이가 없습니다. '!!'는 부울로 암시 적으로 변환되지만'if (condition)'도 true/false 값을 취하고 어느 쪽이라도 동일하게 수행합니다 – vlaz

+0

불필요합니다. 'if' 조건 테스트의 동작은'!!'의 결과와 정확히 같습니다. – Pointy

+0

린터가 덜 불평 할 수도 있습니까? 자동 유형 감지와 유사하며 부울이 아닙니다. – YOU

답변

1

두 번째 차이점이 있습니까?

아니요, 자바 스크립트 엔진 수준에서는 아닙니다. 이미 말씀 드렸듯이 if (그리고 다른 곳에서는 부울이 필요합니다)에 의해 수행 된 테스트는 !!이 수행하는 것과 동일한 작업을 수행합니다. 따라서 첫 번째 차이 (추가 작업)가 유일한 차이점입니다.

+0

답변을 주셔서 감사합니다. 질문을하기 전에 제 의견을 밝힙니다. –

+1

@ LajosArpad : 예, 우리는 말할 수 있습니다. :-) –

관련 문제