ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • null과 undefined 비교
    JavaScript 2022. 9. 23. 11:06

    1. null은 비어 있는 값. undefined는 변수를 선언만 하고 값이 할당되어 있지 않은 것.

    let name1 = null
    console.log(name) // null 을 출력
    
    let name2 
    console.log(name2) // undefined를 출력

     

    빈 값이라는 점에서 null과 undefined는 같지만, 자료형을 비교하면 다르다.

    > undefined==null;
    < true
    
    
    > undefined===null;
    < false

     


    2.undefined 의 자료형

    undefined는 보통 반환할 결괏값이 없을 때 나온다.

    console.log 명령어의 출력은 있지만, 그 자체로 어떤 결괏값이 없기 때문에 undefined 반환.

    > console.log('Hello, undefined!');
       Hello, undefined!
    < undefined

     

    typeof로 자료형을 확인하면 그 자체로 undefied 반환.

    > typeof undefined
    < "undefined"

     

     

    undefined는 불 값으로 형 변환하면 false.

    > !!undefined;
    < false

    그러나 undefined 자체는 false와 같지 않다. 다른 거짓인 값들과도 같지 않다.

    > undefined==false
    < false
    
    > undefined == 0;
    < false
    
    > undefined == '';
    < false

     


    3.null 의 자료유형

    undefined와 마찬가지로 null도 불 값으로 형 변환하면 false.

    > !!null;
    < false

     

    하지만 null은 false와 같지 않다. 다른 거짓인 값들과도 같지 않다. (이 부분은 undefined도 마찬가지다.)

    > null==false;
    < false
    
    > null==0;
    < false
    
    > null=='';
    < false

     

     문제는 typeof 로 확인한  null의 자료형이다.

    > typeof null
    < "object"

    원래는 "null"이 나오는 것이 맞다. 그러나 결괏값은 "object".

    이 현상은 자바스크립트에서 유명한 버그이다.

     

    언어가 만들어진 초창기의 실수이어서,

    type of null 을 사용한 모든 코드에 영향을 주기 때문에 수정할 수 없다고 한다.

     

    따라서 값이 null인지 확인하기 위해서는 === null을 사용해야 한다.

     


    4. 비교연산자 == 관계가 헷갈릴 때.

     

    하지만 사실, 헷갈리면 === 을 쓰면 될 일이다. 

    이 표를 굳이 참고할 일은 없을 것이라고 지혜로운 누군가가 알려주었다.

Designed by Tistory.