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라는 문자를 가져온다.
if(a) {
console.log(a);
}
if(b) {
console.log(b);
}
b = Boolean(false);
if(b) {
console.log(b);
}
NaN(Not a Number)
, undefined, 공백문자열 ("")
b = new Boolean(false);
if(b) {
console.log("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문에도 걸릴 수 있다.
댓글 없음:
댓글 쓰기