>  기사  >  웹 프론트엔드  >  JavaScript에서 빈 배열이 참인 동시에 거짓인 것처럼 보이는 이유는 무엇입니까?

JavaScript에서 빈 배열이 참인 동시에 거짓인 것처럼 보이는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-07 16:33:02452검색

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

JavaScript에서 빈 배열의 수수께끼 같은 특성 공개

JavaScript에서 빈 배열은 참인 동시에 거짓인 것처럼 보이는 독특한 이중성을 나타냅니다. 이 복잡한 동작은 항등 연산자에 의해 수행되는 암시적 변환에서 비롯됩니다. 기본 메커니즘을 자세히 알아보기 위해 아래 코드 조각을 살펴보겠습니다.

<br>var arr = [];<br>console.log('Array:', arr);<br>if (arr) console.log("참입니다!");<br>if (arr == false) console.log("거짓입니다!");<br>if (arr && arr == false) console .log("...what??");<br>

첫 번째 if 문은 arr 객체(Array는 Object의 인스턴스임)가 있는지 확인하고 true를 반환합니다. 그러나 arr == false인 if 문은 arr 객체의 값을 기본 값인 false와 비교합니다. 이 비교를 수행하기 위해 arr.toString()이 암시적으로 호출되어 빈 문자열 ""을 반환합니다.

이 결과는 Array.join()의 동작으로 설명됩니다. toString()이 배열에서 호출되면 해당 배열에서 Join()을 호출한 결과를 연결된 결과로 반환합니다. 배열이 비어 있으므로 결과는 빈 문자열이며 이는 JavaScript의 잘못된 값 범주에 속합니다. 따라서 arr.toString()은 false로 평가되어 if(arr == false)가 true를 반환하게 됩니다.

if(arr && arr == false)의 특이한 경우는 논리 AND( &&) 연산자입니다. 전체 진술이 참이 되려면 두 조건 모두 참값으로 평가되어야 합니다. arr 자체는 진실이지만 arr == false는 앞서 언급한 암시적 변환으로 인해 true로 평가됩니다. 따라서 접속사는 참으로 평가되어 모순처럼 보이는 "거짓입니다!"로 이어집니다. 출력합니다.

위 내용은 JavaScript에서 빈 배열이 참인 동시에 거짓인 것처럼 보이는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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