분홍분홍 코딩 프로젝트

[Javascript] Null과 Undefined가 달라? 본문

Javascript

[Javascript] Null과 Undefined가 달라?

봄나물소녀 2021. 7. 27. 18:01

null 과 undefined

이 두 타입은 모두 자바스크립트에서 '값이 없음'을 나타낸다.

 

1. undefined

 

- 변수를 선언하고 값을 할당하기 전의 형태(값)라고 볼 수 있다. (변수에 값이 할당되어 있지 않음.)

let a;
console.log(a); // undefined

 

undefined가 나오는 경우의 예시

 

존재하지 않는 객체의 프로퍼티를 읽으려고 할 때

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

존재하지 않는 배열에 엘리먼트를 읽으려고 할 떄

let arr = [1,2,3];
console.log(arr[100]) // undefined

 

2. null

 

null은 의도를 갖고 변수에 null을 할당하여 값이 없다는 것을 나타낸다.

null이 할당된 변수의 타입을 확인해 보면 object인걸 확인할 수 있다.

 

let a = null;
console.log(a); // null

console.log(typeof a); // object

 

보충설명

 

여기서 중요한 것은 변수의 초깃값(initialization)이 undefiend라는 점입니다.

비록 변수만 선언했지만 값을 가진다는 말입니다.

그렇기 떄문에 값이면서 데이터 타입인 것입니다.

 

이에 반해 null 타입 변수의 경우 명시적으로 값이 비어있음을 나타내는데 사용합니다.

다시 말해서, 아무것도 참조하고 있지 않다 라는 의미가 담겨 있으며 주로 객체를 담을 변수를 초기화할 때 많이 사용합니다.

let a = null; // null 타입 변수를 생성

하지만 null 역시 undefined 와 마찬가지로 값이며 데이터 타입입니다.

 

분명한 차이점은 undefined는 변수를 선언만 하더라도 할당되지만 null은 변수를 선언한 후에 null로 값을 바꾼다는 점입니다.

 

정리

 

  • undefined : 접근 가능한 스코프에 변수가 선언되었으나 현재 아무런 값도 할당되지 않은 상태이다. 타입을 확인해 보면 'undefiend' 이다.
  • null : 변수를 선언하고 'null'이라는 빈 값을 할당한 경우이다. 타입을 확인해 보면 'object'이다.