본문 바로가기
Front-End/Javascript

javascript 기초부시기 - 데이터 타입 - boolean, undefined, null

by kimik 2022. 5. 15.

1. boolean 

boolean은 true, false 두가지 값만 가지고있다. 참과 거짓으로 프로그램의 흐름을 제어하는 조건문에서 주로 사용된다.

 

1.1 false는 아니지만 false와 동일시되는 Falsy 값들

console.log(Boolean('')) //false
console.log(Boolean(undefined)) //false
console.log(Boolean(0)) //false
console.log(Boolean(-0)) //false
console.log(Boolean(NaN)) //false

//false일것같지만 true인 값들
console.log(Boolean([])) //true
console.log(Boolean({})) //true

1.2 문자열인 'true', 'false' 처리

console.log(Boolean('true')) //true
console.log(Boolean('false')) //true

console.log(JSON.parse('true')) //true
console.log(JSON.parse('false')) //false

jsp나 php와 같은 서버사이드 환경에서 작업할때 서버 값인 true/false를 자바스크립트에서 사용하면 문자열로 처리되는 경우가 있다.(그 외의 경우도 존재.)

이런 문자열을 Boolean이나 !!로 boolean으로 변환하면 항상 true가 반환되기때문에 위와같이 JSON.parse로 처리해주는게 좋다.

 

2. undefined 

undefined 타입의 값은 undefined가 유일하다. 선언 이후 값을 할당하지 않은 변수는 undefined값을 가지며, 존재하지 않는 객체 프로퍼티에 접근할경우 undefined가 반환된다. 

let x;
console.log(x) //undefined
const obj = {}
console.log(obj.x) //undefined

즉 undefined는 자바스크립트 엔진에 의해 초기화된 값으로, 개발자가 임의로 undefined를 할당하면 본래의 취지에 어긋날 뿐더러 타 개발자에게 혼란을 줄 수 있으므로 권장되지 않는다. 변수에 값이 없다는걸 명시하고 싶다면 undefined가 아니라 null을 할당한다.

 

3. null

null타입의 값은 null이 유일하다. undefined가 자바스크립트 엔진에서 초기화 시킨 값이라면, null은 개발자가 특정 변수에 값이 없다는걸 의도적으로 알리기 위해 사용한다. 이는 변수가 기억하는 메모리 주소의 참조정보를 제거하는것을 의미한다.

또한, 함수가 호출되었으나 유효한 값을 반환할 수 없는 경우, 명시적으로 null을 반환하기도 한다. 

var element = document.querySelector('.myElem');
// HTML 문서에 myElem 클래스를 갖는 요소가 없다면 null을 반환한다.
console.log(element); // null

타입을 나타내는 문자열을 반환하는 typeof 연산자로 null값을 연산해보면 null이 아닌 object가 나오므로 주의해야한다.

var foo = null;
console.log(typeof foo); // object

따라서 null타입을 확인하려면 typeof가 아닌 일치연산자(===)를 사용해야 한다.

var foo = null;
console.log(typeof foo === null); // false
console.log(foo === null);        // true

출처: https://poiemaweb.com/js-data-type-variable

댓글