undefined는 원시 타입(Primitive Type)이다.
변수를 선언하고 값을 할당하지 않을 때 undefined이 자동으로 할당된다.
함수가 값을 리턴하지 않을 때도 undefined가 할당된다.
메서드와 선언에서 변수가 할당받지 못한 경우에도 undefined가 출력된다.
null은 원시 타입(Primitive Type)이다.
변수를 선언하고 빈 값(null)을 할당한 상태이다.
의도적으로 값이 없다는 것을 표현한다.
NaN은 원시 타입(Primitive Type)중 Number 타입
에 속하는값
이다.
typeof NaN // number
typeof null // 'object'
typeof undefined // 'undefined'
null === undefined // false
null == undefined // true
null === null // true
null == null // true
!null // true
isNaN(1 + null) // false
isNaN(1 + undefined) // true
중요한 사실1 : typeof undefined는 undefined이다.
중요한 사실2 : undefined == null 은 true 이다. 둘다 근본적으로는 값이 없음을 의미한다.
중요한 사실3 : typeof null은 출력하면 object이다. 하지만 사실은 null
은 원시 타입이 맞고, 이는 자바스크립트에서 구현 버그로 간주되는 부분이다.
null
과 undefined
모두 값이 없음을 의미하고, 둘다 원시 타입이고, __falsy에 해당하는 값이다.null
은 값이 비어있음을 나타내며, 값이 없는 값이 변수에 등록되어 있는 것이다.undefined
는 변수를 선언하면 초기값으로 할당되는 값이다.NaN
은 원시 타입 중 숫자 Number 타입에 속하는 값이다.