Boolean() Boolean값 변환 메소드, Boolean() vs new Boolean 차이

YS_Study.log·2022년 1월 15일
0

예전에 본 문제에서 입력되는 값이 falsy값인지 여부를 리턴하는 간단한 문제가 있었는데, 레퍼런스 코드를 보니 훨씬 간단하게 구하는 메소드가 있어서 mdn을 참고하여 정리해본다.

예시) 입력되는 값이 falsy값인지 여부를 리턴하는 간단한 문제

if문을 보면 (Boolean(anything)) 어떠한 값이든 모두 불리언값으로 변환 -> true, false 값으로 변환해주며
false 일경우 -> true를, true값일 경우 false를 반환하고 있다.

function falsy(anything) {
  if(Boolean(anything) === false) { 
    return true;
  } return false;
}

Boolean()

Boolean() 메소드는 Boolean값으로 타입을 변환하게 해준다. 값을 true or false로 변환한다.
Boolean()가 실행된 기본값은 true이며, !Boolean()은 false 즉 falsy한 값이 된다.

값이 없거나 falsy한 값이 들어온다면 Boolean 객체의 초기값은 false가 됩니다.
문자열 "false"를 포함한 그 외 모든 다른 값은 초기값을 true로 설정합니다.

vs new Boolean ?

new Boolean : new 생성자를 사용하여 Boolean 인스턴스를 생성한다. 값을 true or false로 변환한다.

var x = Boolean(expression);
var x = new Boolean(expression); // 사용하지 말것

값을 불러언 값으로 타입을 변환할 때 Boolean 객체를 사용해선 안된다. 그 이유는?

  • Boolean 객체의 true와 false 값을 원시 Boolean 값 true, false와 혼동해선 안된다.

값이 undefined, null이 아닌 모든 객체는 조건문에서 true로 계산됩니다. 이는 값이 false인 Boolean 객체도 포함합니다.

  • 객체의 false 값은-> true이다.
  • 원시 false 값은 -> false이다.
  • 객체의 true 값은-> true이다.
  • 원시 true 값도 -> true이다.

즉 아래 if 문의 조건은 참입니다.


var x = new Boolean(false); // true
if (x) { 
  // 이 코드는 실행됨
}

그러나 원시 Boolean 값에는 적용되지 않습니다. 따라서 아래 if 문의 조건은 거짓입니다.

var x = false; // false
if (x) {
  // 이 코드는 실행되지 않음
}

출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Boolean

profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!

0개의 댓글