티스토리 뷰

JavaScript

undefined vs null

da.som 2018. 12. 6. 16:03

null과 undefined의 차이는 아주 쉽지만 생각해본 적이 없을 경우 '응? 그러게? 뭐가 다르지?' 할 수 있어서 적어본다.

undefined

undefined 는 변수를 선언만하고 값을 할당하지 않은 것이다.
즉, 자료형이 결정되지 않은 상태 다.
그래서 값이 할당된 적이 없는 변수에 접근하거나, 존재하지않는 객체 프로퍼티에 접근할 경우 undefined가 반환된다.

    var testValue;
    var finalValue = 1 + testValue;

    console.log(testValue); // undefined
    console.log(finalValue); // NaN

위의 코드에서 undefined는 특수 값 NaN(숫자가 아님)처럼 동작한다.

null

null 은 변수를 선언하고 null이라는 빈값을 할당한 것이며, 자료형은 객체 이다.
그래서 변수를 선언하고 초기화하지만 특정 값을 지정하지 않으려는 경우, 변수에 null 값을 할당한다.

    var testValue = null;
    var finalValue = 1 + testValue;

    console.log(testValue); // null
    console.log(finalValue); // 1

위의 코드에서 null 값은 숫자 0과 같이 동작한다.

결론

  • undefined 와 null 은 모두 빈 값이다.
  • undefined 는 자료형이 결정되지 않은 상태이고, null의 자료형은 객체이다.
    console.log(undefined == null) // true
    console.log(undefined === null) // false

그래서 값만 비교(== 연산자, 동등 연산자) 했을 때는 true가 반환되지만,
자료형까지 비교하면(=== 연산자, 일치 연산자) false가 반환된다.

Reference


댓글