아래는 내 코드이며 항상 거짓 인 것처럼 IF 문을 반환합니다. 사실이어야하지 않습니까?
IF 문으로 평가 된 변수 :
var coloredUI = '';
var coloredText = '';
다음은 IF 문입니다.
if (coloredText && coloredUI == '') {
} else {
}
JavaScript에서 값은 " 진실 "또는 " 거짓 "일 수 있습니다. 두 변수를 모두 "거짓"(문자 없음 == 거짓) 인 빈 문자열로 설정합니다. 다른 잘못된 값은 다음과 같습니다.
정의되지 않음 , 0 , false , null
if
문은 항상 truthy 부울 결과에 대한 조건을 테스트하고 싶어. 표현식을 제공하면 해당 표현식이 평가 되고 결과가 부울이 아닌 경우 JavaScript 엔진이이를 하나로 강제 변환 합니다. 거짓 값은 거짓이되고 진실 값은 참이됩니다.
if(coloredText) {}
평가 대상 :
if(false) {}
coloredText
거짓 값 ( '')으로 초기화 되었기 때문 입니다. 단락 된 논리 AND를 사용했기 때문에 전체 if
가 참이 되려면 두식이 모두 참이어야합니다. 그러나 첫 번째 것이 거짓으로 강요되었으므로 if
진술은 거짓 분기로 진행됩니다.
이를 방지하기 위해 다음과 같이 표현식을 단독으로 강제하는 대신 비교하는 표현식을 작성할 수 있습니다.
if(coloredText == '') // true
이러한 암시 적 유형 강제 개념은 JavaScript가 동등성 테스트를위한 두 가지 메커니즘을 제공하는 이유이기도 합니다 . 예를 들면 다음과 같습니다.
var x = 0;
if(x == false)
이 발생합니다 true
때문에 이중 등호가 변환과 평등을 의미한다 . 는 false
숫자 (로 변환됩니다 0
수 (에 대해 검사) 후 0
우리가 얻을 수 있도록) true
.
하지만 이것은:
var x = 0;
if(x === false)
(A)에 발생한다 false
때문에 결과적 변환이되지 않습니다 여기서 트리플 등호는 항등 수단 과 같이 두 값 / 발현 비교된다.
원래 시나리오로 돌아갑니다. 기능 지원을 확인할 때이 암시 적 유형 강제를 자주 활용합니다. 예를 들어, 이전 브라우저는 지리적 위치를 지원하지 않습니다 (해당 기능을 제공하는 객체를 구현하지 않음). 다음과 같은 지원을 테스트 할 수 있습니다.
if(navigator.geolocation)
경우 navigator
객체가없는 geolocation
속성을 식은로 평가됩니다 undefined
(falsy)과는 if
그 거짓 지점으로 향할 것이다. 그러나 브라우저가 지리적 위치를 지원하는 경우 표현식은 객체 참조 (truthy)로 평가되고 실제 분기로 진행됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다