Поскольку ActionScript 2 знает только один числовой тип, Number, все нечисловые элементы в ваших сравнениях преобразуются в Number - что будет аналогично записи:
Number (null) <= n
Number (undefined) <= n
Number (NaN) <= n
Number (
{что угодно, кроме числа} )
всегда возвращает NaN, поэтому все ваши утверждения действительно сравнивают только случайные числа с NaN. Документация ActionScript четко предупреждает о несопоставимости NaN и рекомендует всегда использовать isNaN () для его проверки.
Если вы делаете по сравнению с NaN, в AS2 это странная вещь:
NaN == Number // returns false
NaN != Number // returns true
Они ведут себя, как и ожидалось, но:
NaN >= Number // returns true
NaN <= Number // returns true
и наконец:
NaN > Number // returns undefined
NaN < Number // returns undefined
Конечно, это не очень интуитивно понятно - любое сравнение с NaN всегда должно быть ложным, и это было исправлено в AS 3 - но в абсолютном смысле имеет смысл, что null
не является числом, и, следовательно, isNaN(null)
должен вернуть true
.