ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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"
    

    댓글

Developer RyuK