Javascript - Null >= 0 is true

Javascript - Null >= 0 is true

자바스크립트 기초 공부를 다시 듣던 중 흥미있는 것을 발견했다
Null==0 false 인데 왜 Null >= 0 은 왜 true일까

스펙 문서에 따르면, >, < 비교 연산자는 Abstract Relational Comparison Algorithm이라는 알고리즘을 사용하여 구문의 true/false를 판정한다.
https://interglacial.com/javascript_spec/a-11.html#a-11.8.5

전체적인 내용은 빼고 결과만 살펴보자

  1. x가 null이고 y가 undefined면, true를 리턴.
  2. x가 undefined이고 y가 null면, true를 리턴.
  3. Type(x)가 Number이고 Type(y)가 String이면, x == ToNumber(y)의 결과를 리턴.
  4. Type(x)가 String이고 Type(y)가 Number이면, ToNumber(x) == y의 결과를 리턴
  5. Type(x)가 Boolean이면, ToNumber(x) == y의 결과를 리턴.
  6. Type(y)가 Boolean이면, x == ToNumber(y)의 결과를 리턴.
  7. Type(x)가 String 또는 Number이고, Type(y)가 Object이면, x == ToPrimitive(y)의 결과를 리턴.
  8. Type(x)가 Object이고, Type(y)가 String 또는 Number이면, ToPrimitive(x)== y의 결과를 리턴.
  9. false를 리턴.
    ToPrimitive은 형변환 함수이다
    https://ko.javascript.info/object-toprimitive

ToPrimitive를 사용하면 숫자형이나 문자형으로의 형 변환을 원하는 대로 조절할 수 있습니다.

null과 0은 다른 타입이므로 2~8번을 살펴보면 모두 해당하지 않고, 9번 false이다
따라서

1
2
3
null == 0; // false
null !==0 ; //true
null >= 0; // true

수학적으로, 두 수 x(null)와 y(0)가 있을 때, x(null)가 y(0) 보다 작지 않다 면, x(null)는 y(0) 보다 반드시 크거나 같다 . 그렇기에

1
null >= 0; // true

라고 할 수 있다.