2016. 9. 6.

[JavaScript] 불린 리터럴(boolean vs Boolean)

boolean타입 vs Boolean()객체

  • boolean은 일반적으로 쓰는 불린형 타입의 true와 false이다.
  • 반면 Boolean은 내장함수로서 new Boolean("");로 객체생성가능.

- boolean 타입
: 불린형 타입으로, true와 false 2가지만 존재한다.

ex)
var a = false; 
var b = true;

    if(a) {
      console.log(a);
    }
    
    if(b) {
      console.log(b);
    }
// a는 출력되지 않지만, b는 if문을 받아 출력한다. 
// if(a)를 if(true)로 바꾸면 console.log(a)는 false를 출력한다.

>>> 즉, 기존 boolean 자료형은 false로 선언될 경우 if문을 거칠 수 없다.




- Boolean 객체
: 불린형 함수로, new를 사용해 객체화할 수도 있다. wrap boolean으로 생각하자.


1. Boolean()
ex)
    b = Boolean(false);
    if(b) {
      console.log(b);
    }
// 이렇게 wrapper Boolean으로 b를 만들면, 아래 키워드 외에는 모두 true반환.
    ※ 0, -0, null, false, NaN(Not a Number), undefined, 공백문자열 ("")

>>> 따라서 위 코드는 b가 false이므로 if문을 거치지 않는다. 


2. new Boolean()
ex 1)
    b = new Boolean(false);
    if(b) {
      console.log("true");
    }
// 여기서는 false인 b가 if문을 거치게 된다. 콘솔결과 true라는 문자를 가져온다.



ex 2)
    b = new Boolean(false);
    if(b.valueOf()) {
      console.log("true");
    }
   else {
      console.log("false");
   }
// if조건에 valueOf()를 걸어주면, boolean객체인 b가 제값을 가져오면서 if문을 거친다.
// 콘솔결과는 false라는 문자를 가져온다.

>>> 즉, 객체로 Boolean()함수를 쓰는 이유는 항상 if문을 거치기 위해서라고 생각한다.
valueOf()로 true인지 false인지 명확히 판단하고 if문에도 걸릴 수 있다.




댓글 없음:

댓글 쓰기