빈 배열의 진실성과 거짓과의 동등성에 대한 혼란
자바스크립트에서는 빈 배열이 진실로 간주됩니다. 그러나 기본 값 false와 비교하면 false로 평가됩니다. 이러한 당황스러운 동작은 등호 연산자에 의해 수행되는 암시적 유형 변환으로 인해 발생할 수 있습니다.
제공된 예제 코드를 자세히 살펴보겠습니다.
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이 존재하는지(객체이므로) 확인합니다. arr은 Array 객체이므로 존재하고 조건은 true로 평가됩니다.
그러나 두 번째 if 문은 arr의 값(toString()을 호출한 후)을 기본 값인 false와 비교합니다. JavaScript에서 []는 toString()으로 호출될 때 빈 문자열("")로 변환되는데, 이는 거짓 값(null, 정의되지 않음, 0 등과 함께)으로 간주됩니다. 따라서 조건도 false로 평가됩니다.
세 번째 if 문은 AND 연산자(&&)를 사용하여 이전 두 조건을 결합합니다. arr(이제 빈 문자열) 및 arr == false(true & false)는 모두 false로 평가되므로 전체 조건은 false로 평가됩니다.
결론적으로 빈 배열은 고려된다는 점에서 진실입니다. 객체 또는 조건부 컨텍스트에서 사용될 때 true로 제시되고 평가됩니다. 그러나 기본 값 false와 비교하면 동등 연산에 의해 수행되는 암시적 유형 변환으로 인해 false로 평가됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3