2012-06-10 9 views
5

명시 적 변환을 나타내는 것 외에 JavaScript에서 double not 연산자를 사용하면 어떤 이점이 있습니까? 최근에는 사람들이 새로운 API의 존재를 두 배로 확인하고 싶지만, 결코 그것을 본 적이 없다고합니다. 내가 읽고JavaScript에서 double (not) vs type 강제 변환

if(!!window.File) 
    // The File API is supported. 
else 
    // Your browser sucks. 

한 점은 이러한 맥락에서 사용될 때, 그러나, 객체는 우리가 확인하는 어쨌든 때문에 논리 값으로 강제 자동 될 것입니다 부울로 캐스팅을 입력 할 수있는 간결하고 모호한 방법이다 정의되어 있는지 확인하십시오.

간단히 말해, 사람들은 왜 엔진 위에 두 개의 부울 연산을 수행합니까?

+0

링크에서 보여 주듯이 전역 적으로 부울로 변환됩니다. 여기에서는 주로 코드를 읽기 쉽도록 만드는 것으로 써 부울 값 만 필요합니다. –

+0

나는 정확히 무엇을 알고있다 !! 의사가하는 일은 의사가하는 것입니다. – Vreenak

+2

실제 사용은 없습니다. 구실로 쉽게 읽을 수있는 습관이 있습니다. –

답변

7

나는 당신이 현재와 같은 맥락에서 그것을 할 어떤 이유도 보이지 않습니다. 결과에 어떤 영향도 미치지 않습니다.

좋은 생각으로 볼 수있는 유일한 시간은 bool 값을 반환해야하는 함수를 작성하는 경우이며 다른 값 (예 : ...

)에서 캐스팅해야하는 경우입니다.
function isNotFalsy(val) { return !!val; } 

예제가 약간 강제 될 수 있지만 아이디어를 얻을 수 있습니다. 반환 값이 사용자가 기대하는 유형인지 항상 확인해야합니다.

+0

최고로 받아 들여지지만, 일부 API는 부울 값을 요구하기 위해 ===/typeof를 지적 할 수 있습니다. – Vreenak

1

if 표현식 안에 !!을 사용할 필요가 없습니다.
값을 부울로 변환하는 데 사용되고 있으며, 기본값은 if입니다.

var x = ""; // a falsy value 
!x // true 
!!x // false 

if (x) === if (!!x) 
+0

답변 해 주셔서 감사합니다. 그러나 저는 이것을 알고 있습니다. 문제는 그것이 일반적인 관행이므로 if 문에서 사용하는 것이 유리한 지 여부입니다. – Vreenak

+2

@watkinsj. 나는 첫 번째 줄에서 그 질문에 대답했다고 믿는다 ... – gdoron

+0

당신은 그것이 필요 없다고 말했다. 나는이 점을 지적했다. 나는 if 문 내부의 확산에 대한 장점이나 설명에 대한 답을 찾을 수 없다. – Vreenak