티스토리 뷰

반응형

Undefined? (null이랑 같은건가?)

자바스크립트에서는 (자바 같은 언어와 달리) 변수의 자료형을 별도로 표기하지 않고, 변수에 담기게 되는 값에 따라 자료형이 결정되게 됩니다. 이러한 특징때문에 undefined라는 상태를 다루게 되는데, 'undefined'라는 키워드는 해당 변수의 자료형이 정해지지 않았음을 나타냅니다.

 

  • undefiend : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태입니다.
  • null : 변수는 존재하나, null 로 (값이) 할당된 상태. 즉 null은 자료형이 정해진(defined) 상태입니다.
var var1; //undefined (어떤 값도 할당되지 않아서 자료형을 알 수 없음)
var var2 = null; //null (null로 (값이) 할당되어서 자료형을 알 수 있음 - null의 자료형은 object다.)

undefined와 null은 '값이 없다' 라는 점에서 유사하지만 엄밀히 말하면 다른 개념입니다. 

 

(+ typeof 연산자로 타입을 확인해보면 undefined는 undefined 타입이, null은 object 타입이라고 표시됩니다.)

 

undefined == null 은 true 나온던데?

하지만 자바스크립트 undefined == null을 비교하면 true값이 나오게 됩니다. 이는 자바스크립트 == 연산자의 자동 형변환 기능때문입니다.

 

자바스크립트에서 숫자 1과 문자 '1'을 비교 할 때 == 연산자를 사용하면 true가 나오지만, 타입까지 엄격히 검사하는 === 연산자를 사용하면 false가 나오게 됩니다.

1 == '1' //true
1 === '1' //false

 

이와 유사하게 undefined와 null도 == 연산자와 === 연산자의 결과가 다르게 나옵니다.

undefined == null //true
undefined === null //false

참고

반응형
댓글