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 중국어 웹사이트의 기타 관련 기사를 참조하세요!