JavaScript에서 빈 배열이 True와 False로 평가되는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-07 17:59:03
원래의
420명이 탐색했습니다.

Why Does an Empty Array Evaluate to Both True and False in JavaScript?

역설 밝히기: 부울의 황혼 지대에 있는 빈 배열

수수께끼처럼 보이는 빈 배열은 독특한 이중성을 나타내며 동시에 참과 거짓. 이 흥미로운 동작은 등호 연산자 내에서 펼쳐지는 암시적 변환에서 비롯됩니다.

제공된 코드 조각에서 우리는 이 이중성을 직접 목격합니다.

var arr = [];
console.log('Array:', arr);

if (arr) console.log("It's true!");
if (arr == false) console.log("It's false!");
if (arr && arr == false) console.log("...what??");
로그인 후 복사

이 수수께끼를 해독하기 위해 우리는 평등 연산자의 역학. 객체와 함께 사용하면(이 경우 배열은 객체임) 객체의 존재 여부를 확인합니다. 따라서 if (arr)는 빈 배열이 유효한 객체이기 때문에 true를 반환합니다.

그러나 == 연산자를 사용하여 배열을 false 프리미티브와 비교할 때 상황이 더 모호해집니다. 이 비교에는 arr.toString()을 통해 배열을 문자열로 변환하는 작업이 포함됩니다. ""로 표시되는 결과 빈 문자열은 JavaScript에서 거짓 값으로 간주됩니다.

따라서 if (arr == false)는 이 컨텍스트에서 빈 문자열이 false 기본 요소와 동일하기 때문에 true로 평가됩니다. 이러한 명백한 모순은 JavaScript가 수행하는 암시적 유형 변환에서 발생합니다.

혼란을 해결하려면 값과 유형 동등을 모두 고려하는 삼중 동등 연산자(===)를 선택해야 합니다. 이렇게 하면 빈 배열이 거짓으로 간주되지 않습니다.

요약하면, 빈 배열이 참과 거짓이라는 이분법처럼 보이는 것은 등호 연산자와 엄격한 등호 연산자가 수행하는 서로 다른 평가에서 비롯됩니다. JavaScript 유형 처리의 복잡성.

위 내용은 JavaScript에서 빈 배열이 True와 False로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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