Ответ 1
Поскольку оператор <
возвращает false
, когда абстрактный реляционный алгоритм возвращает undefined
. См. Раздел 11.8.1:
11.8.1 Менее чем оператор (
<
)Производство RelationalExpression: RelationalExpression < Выражение Shift оценивается следующим образом:
- Пусть lref является результатом вычисления RelationalExpression.
- Пусть lval - GetValue (lref).
- Пусть rref является результатом оценки выражения Shift.
- Пусть rval - GetValue (rref).
- Пусть r является результатом выполнения абстрактного реляционного сравнения lval < RVAL. (см. 11.8.5)
- Если r undefined, верните false. В противном случае верните r.
Это относится ко всем реляционным операторам. Алгоритм имеет результат undefined
, но операторы преобразуют его в false
. И это имеет смысл. 1
не < NaN
(и это не > NaN
, или == NaN
, или...:-)).
(Приятно видеть, что люди читают спецификацию.)