값의 같음과 크기를 비교해 boolean 결과를 만듭니다.
===와 !==는 타입 변환 없이 값과 타입을 함께 비교합니다. ==는 암시적 변환 때문에 예측하기 어려운 경우가 있어 명시적 변환과 엄격 비교를 권장합니다.
inputValue는 문자열 10이고 numberValue는 숫자 10입니다. == 비교는 문자열을 숫자로 바꾼 뒤 비교해 true를 내지만, === 비교는 타입이 다르다는 이유만으로 false를 돌려줍니다. 세 번째 줄의 >=는 같은 값도 포함하므로 10 >= 10이 true가 됩니다.
두 문자열을 크기 비교하면 숫자 크기가 아니라 UTF-16 코드 단위 순서로 앞 글자부터 비교합니다. 그래서 문자열 10과 9를 비교하면 첫 글자 1이 9보다 앞서 10 < 9가 true가 됩니다. 또 NaN은 자기 자신과도 같지 않아 NaN === NaN이 false이므로 Number.isNaN으로 확인합니다.
==가 편해 보여도 빈 문자열, 0, false가 섞이면 예상하기 어려운 결과를 만들 수 있습니다.
직접 바꿔보세요Number(inputValue)로 변환한 뒤 엄격 비교하세요.