자바스크립트 Undefined와 null (feat. 자바스크립트)

JangGwon·2022년 8월 1일
0

본 포스팅은 코어 자바스크립트 책을 읽고 정리한 내용입니다.


1.undefined

undefined

사용자가 명시적으로 지정할 수도 있지만, 값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여함.

자바스크립트 엔진이 undefined을 반환하는 경우

  • 값을 대입하지 않은 변수에 접근하는 경우
  • 객체 내부의 존재하지 않는 프로퍼티에 접근하는 경우
  • return문이 없거나 호출되지 않는 함수를 실행할 경우

empty와 undefined는 다른 개념

var arr1 =  new Array(3);
console.log(arr1); 				// output : [empty x 3]

var arr2 = [undefined, undefined, undefined];
console.log(arr2);				// output : [undefined, undefined, undefined]
  • 순회와 관련된(foreach, map, filter, reduce등) 배열 메서드들이 '비어있는 요소'를 순회 대상에서 제외하고 건너뛰는 반면, undefined가 비록 '비어있음'을 의미하긴 하지만 하나의 값으로 동작하기 때문에 이때의 프로퍼티나 배열의 요소는 고유의 키값(프로퍼티 이름)이 실존하게 되고, 따라서 순회 할 수 있다.


2. null

null

null 역시 undefined와 처럼 "없음"을 의미한다. 그래서 '비어있음'을 명시하고자 할 때는 undefined가 아닌 null만 사용하는 규칙을 따른다면 undefined는 오직 값을 대입하지 않은 변수에 접근하고자 할 때 자바스크립트 엔진이 반환해주는 값으로 구분시킬 수 있다.


null의 주의할점

자바스크립트 자체 버그 중 하나인 typeof null이 ojbect라는 점인데, 따라서 어떤 변수의 값이 null인지 여부를 판별하기 위해서는 다른 방식으로 접근해야한다.

var n = null;
console.log(typeof n);				// output : object

console.log(undefined == null) 		// output : true
console.log(undefined === null)	    // output : false

Null과 undefined를 동등 연산자(==)로 비교를 한다면 서로 같다고 판단합니다. 따라서 어떤 변수가 실제로 null인지 아니면 Undefined인지는 동등 연산자로 비교해서는 알 수 없기 때문에, 일치 연산자(===)를 써야만 정확히 판별할 수 있다.

참조

『코어 자바스크립트』 (정재남, 위키북스)

0개의 댓글