-
[JS] undefined / null / NaN 차이점간단정리 2020. 7. 7. 23:04
undefined
: 선언은 되었으나 값이 할당 되지 않은 상태 (초기화 안하면 무조건 undefined 상태)- var temp;
Boolean(undefined) 에서는 false Number(undefined) 에서는 NaN String(undefined) 에서는 "undefined"
null
: 아무런 값도 나타내지 않는 특수한 값 (초기화 해주어야 null 상태가 존재 할 수 있음)var temp = null;
C++ 에서는 포인터형 변수가 아무 것도 가르키지 않을 때 nullptr이 된다. (null은 0이 래핑 되어있다.)
null의 타입은 null이다. 하지만,
typeof로 출력 되는 값은 object 이다.
이는, 코드가 업데이트 되지 않은채 많은 시간이 흘렀기 때문이라고 한다. (링크)
Boolean(null) 에서는 false Number(null) 에서는 0 String(null) 에서는 "null"
NaN
: JS에서만 존재하는 '숫자가 아니다'를 의미하는 값undefined를 Number로 형변환 하면 NaN이 되지만, null을 변환하면 0이 나온다. 이는 C++에서 null이 0과 래핑 되어있는 것과 같다.
NaN === NaN 은 false다. NaN을 검사하기 위해서는 `isNaN()` 이라는 전용함수를 사용해야한다.
하지만 isNaN()은 string, object를 넣어도 성립된다.
Number(undefined | string) = NaN Boolean(NaN) 에서는 false Number(NaN) 에서는 NaN String(NaN) 에서는 "NaN"
'간단정리' 카테고리의 다른 글
[JS] 유형 비교 `==`와 엄격한 비교 `===`의 차이점 (0) 2020.07.07 MobX @action @computed 간단 정리 (1) 2020.07.03 `React.PureComponent` 이놈을 알아보자. (0) 2020.06.02