리액트

Boolean

두캔두잇 2024. 12. 13. 14:32

불리언타입에 대해 조금 더 공부를 해봤다. 기존에 내가 알고 있던 boolean이라고 한다면, 단순히 true / false 로 알고있었고
조금 더 나아가면 0(false) 과 1(true) 이였다.
그러다 문득 boolean타입에 대해 조금 더 알고싶어져서 mdn 사이트를 보며 새롭게 안 내용들을 정리해보려한다.

우선 mdn에서는 boolean에 대해 이렇게 설명하고있다.

여기에서도 보면 알수있듯이 false의 경우에는 0 이외에도 음수인 -0과 null,Nan,undefined 그리고 빈 문자열("") 또한 false가 된다는것을 알수있다. 대충 null 또는 Nan, undefined는 false일 것 같다는 느낌이 오지만 빈 문자열 또한 false가 된다는 사실을 처음접했다.
실제로 테스트를 해본다면

const a = ''  // a 상수변수에는 빈 문자열이 할당됨
if(a) {  // if문의 조건이 참일 경우
    console.log('true!')
} else { // 참이 아닐경우
    console.log('false!')
}

이렇게 해본다면 이전에 나였으면 "true가 나오지 않을까? 그래도 빈 문자열이라는 값은 할당되어 있는거니깐" 라고 생각했을 것이다. 하지만 콘솔을 출력해보면 # false! 가 출력되는 것을 볼 수있다. mdn문서에서 설명한 것처럼 빈 문자열이여도 값이 없는 것으로 간주되어 false가 나오는 것이다.

그렇다면...

오브젝트는 어떨까? 예시로 빈 배열이라던가 빈 객체를 만들었을 때는 어떻게 출력될까? 라는 궁금증에 만들어봤다.

const obj = []
if(obj) {
    console.log('true')
} else {
    console.log('false')
}

위에서는 분명 빈 문자열은 false라고 했으니깐 오브젝트안에도 아무 값이 없으니 당연히 false겠지? 라고 생각하며 콘솔을 찍어봤다.

하지만 예상과는 다르게 true가 출력이 되었다.

그 이유는, 값이 없다고해도 array는 object 그 자체이기 때문에 true로 된다고 한다.
정리하자면 빈 문자열('')은 아무 값도 없기 때문에 false이지만, object는 그 자체로 object이기 때문에 true로 된다!

위에서 쉽게 이해하기위해 풀어서 정리했지만 그래도 이해가 안된다면 mdn 공식문서를 보거나 아래의 예시를 참고하는 것이 좋겠다.