다음과 같은 예를 자주 볼 수 있습니다.
var a;
var b=!!a;
a의 기본값은 정의되지 않습니다. !a는 참이고, !!a는 거짓입니다. 따라서 b의 값은 정의되지 않은 값이나 기타 값이 아닌 거짓입니다. 이는 주로 후속 판단을 용이하게 하기 위한 것입니다.
일반적으로 다음 표현식을 부울 유형 데이터(boolean)로 강제하는 데 사용됩니다. 즉, true 또는 false만 가능합니다.
자바스크립트는 약한 유형의 언어이기 때문에(변수는 고정된 데이터가 아닙니다.) 유형) 따라서 때로는
코드 복사 와 유사하게 해당 유형으로 캐스팅해야 합니다. 코드는 다음과 같습니다.
a=parseInt(“1234″)
a=”1234″-0 //숫자로 변환
b=1234 ”” //문자열로 변환
c= someObject.toString() //객체를 문자열로 변환
첫 번째와 네 번째 유형은 명시적 변환이고 두 번째와 세 번째 유형은 암시적 변환입니다
부울 변환, JavaScript 규칙 규칙은
false, undefine, null, 0, "" is false
true, 1, "somestring", [Object] is true
null 및 정의되지 않음 등입니다. 다른 암시적으로 변환된 값의 경우 ! 연산자를 사용하면 실제 결과가 생성되므로 두 개의 느낌표를 사용하는 목적은 이러한 값을 "동등한" 부울 값으로 변환하는 것입니다.
>
var foo
alert(!foo) ;// 정의되지 않은 경우 느낌표는 true를 반환합니다.
alert(!goo);//Null의 경우 느낌표도 true를 반환합니다.
var o={flag:true}; 🎜>var test =!!o.flag;//var test=o.flag||false;
alert(test)
이 예는 undiffed 및 null인 경우를 보여줍니다. 느낌표 1개를 사용하면 true가 반환되고, 느낌표 2개를 사용하면 false가 반환됩니다. 따라서 느낌표 2개의 역할은 변수 값이 명시적으로 설정된 경우(null/Unified/0/"" 등이 아님) result 변수의 실제 값을 기준으로 반환됩니다. 설정되지 않은 경우 결과는 false입니다.