undefined
,null
,nan
의 차이에 대해서 같이 블로깅 해보려고 한다.
숫자가 아닌 다른 값으로 해석하여 출력된 값이다
function isNumber(a) {
if(isNaN(a)){ //a가 NaN일때 NaN반환
return NaN;
}
return a; //아니라면 그냥 a 반환
}
console.log(isNumber(5)) // 5
console.log(isNumber('hello')) //NaN
Number('hello') // NaN
문자열을 number로 바꾸려고 하면 Nan이 나온다.
그렇다면 isNaN
은?
어떤 값이 NaN인지 판별하는 함수(메서드)다.
하지만 MDN에서는, 함수는 몇몇 혼란스러운 케이스을 가지고 있으므로, ECMAScript 2015에서 추가한 Number.isNaN()
으로 바꾸는 편이 좋을 수도 있다.라고 설명한다.
변수는 선언
했지만, 값을 할당하지 않은
경우다.
let mango
console.log(mango) //undefined
++ 원시자료형에서의 undefined
String(undefined) //'undefiend'
Number(undefined) //NaN
Boolean(undefined) //false
typeof(undefined)//'undefined'
명시적으로 값이 비어있는 상태
를 말한다.
let mango =null
console.log(mango) //null
++ 원시자료형에서의 null
String(null) //'null'
Number(null) //0
Boolean(null) //false
typeof(null)//'object'
undefined는 변수의 값이 등록되어 있지 않아서 초기값으로 정의되었고,
null은 값으로써 의미없는 특정값이 등록되어 있는 것이다.