null과 undefined 비교하기

Kaydenna92·2022년 12월 18일
0

JavaScript

목록 보기
12/15

null과 undefined를 다른 값들과 비교할 땐 예상치 못한 일들이 발생한다.

1. 일치연산자 ===을 사용하여 null과 undefined 비교

두 값간의 자료형이 다르기 때문에 일치 비교 시 false가 반환된다.

alert(null === undefined); // false

2. 동등연산자 == 을 사용하여 null과 undefined 비교

alert(null == undefined); // true

3. 산술연산자나 기타 비교연산자 <, >, <=, >=를 사용하여 null과 undefined 비교

null과 undefined는 숫자형으로 변환된다.

  • null0, undefinedNaN으로 변환된다.

4. null vs 0

alert(null > 0);  // (1) false
alert(null == 0); // (2) false
alert(null >= 0); // (3) true
  • (3)에서 null은 0보다 크거나 같다고 했기 때문에, (1)이나 (2) 중 하나는 true여야 하는데 둘 다 false를 반환하고 있다.

    이런 결과가 나타나는 이유는 동등연산자 ==와 기타 비교 연산자 <, >, <=, >=의 동작 방식이 다르기 때문이다.

    • (1)에서는 거짓을, (3)에서는 참을 반환하는 이유는 null이 숫자형으로 변형돼 0이 되기 때문이다.
    • 그런데 동등 연산자 ==는 피연산자가 undefinednull일 때 형 변환을 하지 않는다. undefined와 null을 비교하는 경우에만 true를 반환하고, 그 이외의 경우(null이나 undefined를 다른 값과 비교할 때)는 무조건 false를 반환한다. 따라서 (2)는 거짓.

5. 비교가 불가능한 undefined

undefined를 다른 값과 비교해서는 안된다.

alert( undefined > 0 ); // (1) false
alert( undefined < 0 ); // (2) false
alert( undefined == 0 ); // (3) false

이런 결과가 나타나는 이유?

  • (1)과 (2)에선 undefinedNaN으로 반환되는데(숫자형으로 변환), NaN 이 피연산자인 경우 비교 연산자는 항상 false를 반환한다.
  • undefined는 null이나 undefined와 같고, 그 이외의 값과는 같지 않기 때문에 (3)은 false를 반환한다.
profile
persistently

0개의 댓글