Javascript의 null과 undefined의 차이점
null과 undefined는 둘 다 변수에 값이 없는 것을 나타내지만, 둘의 의미는 꽤 다릅니다.
undefined는 변수를 선언하고 값을 할당하지 않은 상태, null은 변수를 선언하고 빈 값을 할당한 상태(빈 객체)
라고 말할 수 있습니다. 즉 undefined는 자료형이 없는 상태입니다.
따라서 typeof를 통해 자료형을 확인해보면 null은 object로 undefined는 undefined가 출력되는 것을
확인해볼 수 있습니다.
// typeof
typeof null; // 'object' // null의 문자열
typeof undefined; // 'undefined' // undefined의 무낮열
null == undefined; // true || null 과 undefined는 동일한가?
null === undefined; // false || null 과 undefined의 타입은 동일한가?
null === null // true
null == null // true // null
!null // true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
1. null
null은 NULL의 symbol(심볼)이며, 의도를 가지고 변수에 null을 할당해 값이 없다는 것을 나타낸다.
null이 할당된 변수의 타입을 확인해 보면 object인 것을 확인할 수 있다.
let a = null;
console.log(a); // null
console.log(typeof a); // object
2.undefined
변수를 선언하고 값을 할당하기 전의 형태(값)이라고 볼 수 있다.(* 변수에 값이 할당되지 않음)
let b;
console.log(b); // undefined
undefined가 나오는 경우의 예시
존재하지 않는 객체의 프로퍼티를 읽으려고 할 때
let obj = {};
console.log(obj.a); // undefined
존재하지 않는 배열에 엘리먼트를 읽으려고 할 때
let arr = [1, 2, 3];
console.log(arr[10]); // undefined
정리
- undefined: 접근 가능한 스코프에 변수가 선언되었으나 현재 아무런 값도 할당되지 않는 상태이다.
타입을 확인해보면 undefined가 뜬다. - null: 변수를 선언하고 'null' 이라는 빈 값을 할당한 경우이다. 타입을 확인해 보면 'object'이다.
undeclared
- undefined: 접근 가능한 스코프에 변수 선언조차 되지 않는 상태이다. 타입을 확인해 보면 undefined이다.
- typeof undefined는 출력하면 undefined이다.
- type null을 출력하면 object이다. 하지만 이는 여전히 원시 타입(primitive value)로, Javascrip에서는 구현 버그로
간주한다. - undefined == null은 true이다.
참고 자료
'프론트 엔드 > Javascript' 카테고리의 다른 글
[Javascript] OOP vs FP란 무엇인가? (0) | 2022.01.23 |
---|---|
[Javascript] Javascript와 Node.js의 차이 (0) | 2022.01.23 |
변수 타입 (var, let, const)와 스코프 연산자(scope) 개념 (0) | 2022.01.21 |