null, undefined는 == 동등비교시 숫자로 형변환되지 않는다.

lee jae hwan·2022년 7월 22일

javascript

목록 보기
5/107

비교연산자는 피연산자 타입이 다를때 숫자형으로 형변환후 비교한다.

console.log( 'a' > 1 );  -->  NaN > 1

'a'가 문자열이므로 숫자로 형변환하면 NaN이되고 NaN과 숫자의 비교연산은 false를 반환한다.


console.log( null == 0 );  // false

위의 규칙을 따르면 null은 숫자로 형변환되어 0이되어 0 == 0이므로 true를 반환해야 한다. 그러나 false를 반환한다.

null과 undefined는 == 동등비교시 숫자로 형변환되지 않는다.

왜 그럴까?

console.log(null == "\n0\n");

만약 null, undefined가 동등비교시 숫자로형변환된다면 위의 경우에도 true를 반환하게 되는 문제점이 발생되기때문에 어쩔수없이 이런 규칙이 생기게 되었다.

console.log( null > 0  ); // false
console.log( Number(null) ); // 0
console.log( Number(undefined) ); // NaN

다른비교연산에서는 숫자로 형변환된다.

0개의 댓글