[JavaScript] 비교 연산자에서의 [] 타입 변환

Narcoker·2024년 4월 24일
0

JavaScript

목록 보기
54/55
post-custom-banner

if문 내부의서의 타입 변환

if([])
  console.log(true); 
else
  console.log(false);


// 실행결과
true

조건문 내부에서의 빈 배열은 true로 취급한다.

빈 배열도 객체로 취급하는 Javascript의 특성 때문이다.

추가로 대표적인 Falsy 한 값은 다음과 같다.
이 외의 값들은 Truthy 한 값으로 취급한다.

false null undefined 0 NaN ''

비교 연산자에서의 []

console.log([] == true);

// 실행 결과
false

조건문에서의 빈 배열은 Truthy 한 값으로 취급한다고 했는데
비교 연산자에서는 falsy 한 값으로 취급된다.

동등성 변환을 하기 때문인데
빈 배열을 동등성 변환을 하면 '' 로 변환된다.

'' 는 위에서 언급한 것 처럼 Falsy한 값으로 취급하기 때문에
결과값이 false 로 나오게 된다.

비교연산자에서 빈배열을 Truthly로 판단하게 하려면

console.log(Boolean([]) == true)
console.log(!![] == true)

// 결과값
true
true

빈 배열이 비교연산자에 도달하기 전에 명시적 타입 변환으로 미리 Truthy 한지 판단한다.
이렇게하면 빈배열이 '' 로 변환되는 것을 막을 수 있다.


의도적으로 == 를 사용하여 비교하는 경우는 잘 없긴 하나
만에 하나 실수를 할 경우도 있기 때문에 정리를 해둔다.

profile
열정, 끈기, 집념의 Frontend Developer
post-custom-banner

0개의 댓글