Вопрос о сравнении JavaScript (пустой указатель> = 0)

Как я должен понять их?

null>0
> false

null==0
> false

null>=0
> true
28
задан Eonil 30 July 2010 в 14:19
поделиться

4 ответа

Операторы отношения (> = и <= ) выполняют приведение типов ( ToPrimitive ) с типом подсказки Number ], все присутствующие реляционные операторы имеют такое поведение.

Вы можете увидеть внутренние детали этого процесса в The Abstract Relational Comparison Algorithm .

С другой стороны, оператор Equals ( == ), если операнд null , он возвращает только true , если другой - либо null , либо undefined , принуждение числового типа не выполняется.

null == undefined; // true
null == null; // true

Проверьте внутренние детали этого процесса в The Abstract Relational Comparison Algorithm .

Рекомендуемые статьи:

21
ответ дан 28 November 2019 в 03:48
поделиться

Интересно! Похоже, что для Javascript нужна пара новых операторов идентификации, например > == и <== . Хотя я не уверен, что это имело бы смысл, учитывая числовые значения > и <.

Это дает ожидаемый результат ...

(null > 0 || null === 0);
0
ответ дан 28 November 2019 в 03:48
поделиться

Операторы относительного сравнения подразумевают числовой контекст, поэтому в этих случаях (> , > = ) null преобразован в число (ноль).

Однако в случае == оба значения обрабатываются как логические значения, и Javascript не считает, что null должно быть равно любым другим «ложным» значениям. Это как-то странно. Алгоритм равенства для == имеет множество особых случаев, и null является одним из них. Это только == самому себе и undefined .

4
ответ дан 28 November 2019 в 03:48
поделиться

Когда в числовом выражении используется null, он принимает значение 0, что объясняет ваши случаи> и> =.

== более тонкий. Неофициально, null - это не то же самое, что ноль, поэтому в этом есть смысл.

2
ответ дан 28 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: