>  기사  >  웹 프론트엔드  >  "0"은 거짓이지만 JavaScript에서 if로 테스트하면 참인 이유는 무엇입니까?

"0"은 거짓이지만 JavaScript에서 if로 테스트하면 참인 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-04 19:19:02903검색

Why Does

JavaScript 평등 퍼즐: "0"은 거짓이지만 if로 테스트하면 참입니다

JavaScript의 평등 연산자는 예상치 못한 결과를 초래할 수 있습니다. 다음 코드에서 알 수 있듯이:

console.log("0" == false); // true
console.log(false == "0"); // true

이 코드는 문자열 "0"이 부울 값 false와 동일함을 의미합니다. 그러나 다음 코드는 조건이 "0"임에도 불구하고 "ha"를 인쇄합니다.

if ("0") console.log("ha"); // ha

왜 이런 일이 발생합니까?

이 동작을 이해하려면 다음이 필요합니다. JavaScript의 참값과 거짓값을 이해합니다. JavaScript에서 다음 값은 거짓입니다.

false
0
""
null
undefined
NaN

다른 모든 값은 진실입니다.

코드 조각의 처음 두 줄에서 항등 연산자(==)는 유형 강제 변환을 수행합니다. 문자열 "0"을 부울 값 false와 비교합니다. "0"은 거짓 값이므로 거짓으로 간주됩니다.

그러나 세 번째 코드 줄의 if 문은 동일한 유형의 값만 고려하는 완전 항등(===)을 사용합니다. 동등하다. "0"은 문자열이고 false는 부울이므로 조건은 false로 평가됩니다.

혼란을 피하기 위해 JavaScript에서 값을 비교할 때는 엄격한 동등(===)을 사용하는 것이 좋습니다. 다음 수정된 코드는 "nothing"을 인쇄합니다.

if ("0" === false) console.log("ha"); // nothing

동등(==)과 완전 동일(===)의 차이점을 이해하면 값을 정확하게 비교하는 JavaScript 코드를 작성할 수 있습니다.

위 내용은 "0"은 거짓이지만 JavaScript에서 if로 테스트하면 참인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.