개념/배경
JavaScript에서 조건식은 내부적으로 ToBoolean 연산을 거쳐 참거짓을 판정함 이때 객체 타입은 모두 truthy로 간주되며 배열도 객체에 해당함 따라서 빈 배열 []과 빈 객체 {} 역시 조건문에서 true로 평가됨 반대로 falsy는 정해진 값만 해당됨 false, 0, -0, 0n, “”, null, undefined, NaN
예시
다음은 빈 배열이 조건문에서 어떻게 평가되는지 확인하는 간단한 코드
if ([]) {
console.log("빈 배열은 truthy입니다!")
} else {
console.log("빈 배열은 falsy입니다!")
}
// 출력: "빈 배열은 truthy입니다!"
배열이 비어 있는지를 논리적으로 구분하려면 길이를 확인해야 함
const myArray = []
if (myArray.length === 0) {
console.log("빈 배열입니다! (falsy처럼 취급)")
} else {
console.log("배열에 요소가 있습니다! (truthy)")
}주의할 점
빈 배열은 truthy이지만 느슨한 동등 비교는 다른 규칙이 개입할 수 있음
[] == false // true
Boolean([]) // true
조건식은 ToBoolean으로 배열을 truthy로 처리하지만, == 비교는 타입 변환 과정에서 숫자 0과 false가 같게 평가되는 등 예외적 동작이 발생함 조건식 판단은 Boolean 변환 또는 길이 검사 사용 권장
정리
- []와 {}는 조건문에서 truthy로 평가됨
- “비어 있음"을 판단하려면 배열은 length === 0 확인
- 느슨한 동등 비교 == 는 혼동 유발 가능성 높음, 조건 판단에는 명시적 검사 권장