> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 두 개의 느낌표의 역할

JavaScript에서 두 개의 느낌표의 역할

高洛峰
풀어 주다: 2016-11-28 10:49:13
원래의
1575명이 탐색했습니다.

var a;

var b=!!a;

a의 기본값은 정의되지 않음입니다. !a는 참이고, !!a는 거짓입니다. 따라서 b의 값은 정의되지 않은 값이나 다른 값이 아닌 거짓입니다. 이는 주로 후속 판단을 용이하게 하기 위한 것입니다.

!! 일반적으로 다음 표현식을 부울 유형 데이터(boolean)로 강제하는 데 사용됩니다. 즉, JavaScript는 약한 유형의 언어이기 때문에

입니다. 고정된 데이터 유형 없음) 따라서 때때로 다음과 같이 해당 유형으로 캐스팅해야 합니다:

a=parseInt(“1234″)

a="1234″-0 // Convert to number

b=1234+”” //문자열로 변환

c=someObject.toString() //객체를 문자열로 변환

여기서 유형 1과 4는 2와 3은 암시적 변환

부울 변환, JavaScript 규칙 규칙은

false, undefine, null, 0, ""는 false

true입니다. 1, "somestring", [Object]는 true입니다

null 및 unundefined와 같은 다른 암시적으로 변환된 값의 경우 ! 연산자는 true 결과를 생성하므로 두 개의 느낌표를 사용하는 목적은 변환하는 것입니다. 이 값을 "동등한" 부울 값으로 변환

============================== ================================================= =========================

간단한 예를 사용하여 설명하겠습니다.
var o={flag:true };
var test=!!o.flag;//var test=o.flag||false;
alert(test);
null 및 undefed에 ! 연산자를 사용하면 다음과 같습니다. 실제 결과인 두 개의 느낌표를 사용하는 목적은 o의 플래그 값이 명시적으로 설정된 경우(null/정의되지 않음/0""/등이 아님) 당연히 테스트가 o.flag와 동일한 값을 사용한다는 것입니다. ; 설정되지 않은 경우 테스트는 기본적으로 null 또는 정의되지 않은 false로 설정됩니다.
jQuery의 전형적인 예는 다음과 같습니다: (jQuery 1.7.0.js: Line 748)
grep: function( elems, callback, inv ) {
var ret = [], retVal;
inv = !!inv;

// 배열을 살펴보고, 유효성 검사 함수를 전달하는 항목만 저장
//
for ( var i = 0, length = elems.length; i retVal = !!callback( elems[ i ], i );
if ( inv !== retVal ) {
ret.push( elems[ i ] );
}
}

return ret;
}
grep 함수 사용 시 세 번째 매개변수가 주어지고 null/undefine/0""/etc 값이 아닌 경우. 이면 inv는 참이고, 그렇지 않으면 거짓입니다. 이것의 목적은 후속 판단을 용이하게 하기 위해 inv 및 retVal의 값을 다른 값이 아닌 true/false에서만 가져올 수 있도록 하는 것입니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿