undefined 는 변수를 선언은 하였지만, 값을 할당하지 않을 경우의 상태를 나타낸다.(변수의 초기값인 셈)
const word
console.log(word) // undefined
Boolean(undefined) // false
Number(undefined) // NaN
String(undefined) // 'undefined'
typeof(undefined) // 'undefined'
null 은 명시적으로 값이 비어있는 상태를 나타낼 때 사용된다.
const word = null
console.log(word) // null
Boolean(null) // false
Number(null) // 0
String(null) // 'null'
typeof(null) // 'object'
변수의 값이 등록 되어있지 않기 때문에 초기값으로 자동 정의된 것이다.
값은 값이지만 값으로써 의미없는 특정한 값이 등록되어 있는 것이다.
undefined 는 미리 선언된 전역변수(전역 객체의 프로퍼티)
null 은 선언, 등록을 하는 키워드인 것이다.(의도적으로 개발자가 저장한것)
NaN의 뜻은 not a number의 함축한 것이다.
즉, 숫자가 아닌 다른 원시형으로 해석하여 출력된 값이다.
function sanitise(x) {
if (isNaN(x)) { // isNaN은 NaN인지 판별하는 메서드
return NaN;
}
return x;
}
console.log(sanitise('1')); // 1
console.log(sanitise('NotANumber')); // NaN
Boolean(NaN) // false
Number(NaN) // NaN
String(NaN) // 'NaN'
typeof(NaN) // 'number'