Почему значение null & lt; = 0 соответствует true в JavaScript? [Дубликат]

Он может быть добавлен при этом '& amp;' может использоваться для добавления дополнительных условий, например

df = df[(df.EPS > 2.0) & (df.EPS <4.0)]

Обратите внимание, что при оценке утверждений панды нужны скобки.

26
задан Eonil 30 July 2010 в 15:19
поделиться

4 ответа

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

Вы можете увидеть внутренние детали этого процесса в . Алгоритм абстрактного реляционного сравнения .

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

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

Проверьте внутренние детали этого процесса в . Алгоритм абстрактного реляционного сравнения .

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

19
ответ дан CMS 22 August 2018 в 03:40
поделиться
  • 1
    ОК. & quot; & quot; & quot; & quot; & quot; & quot; & quot; оценивать нуль как 0. & quot; == & quot; не. Благодарю. – Eonil 31 July 2010 в 08:44
  • 2
    Другое интересное, что & gt; = b не оценивается как ((a & gt; b) || (a == b)), а как! (a & lt; b). Это объясняет, почему null & gt; = 0 не является таким же, как & gt; или ==. – bschandramohan 11 June 2014 в 05:50

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

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

2
ответ дан djna 22 August 2018 в 03:40
поделиться
  • 1
    Этот является очень полезной ссылкой для понимания шагов, предпринятых при использовании этих операторов. Все еще не объясняет сумасшедшую логику, но меня ... – Stephen 30 July 2010 в 15:29

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

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

(null > 0 || null === 0);
0
ответ дан Josh Stodola 22 August 2018 в 03:40
поделиться

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

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

4
ответ дан Pointy 22 August 2018 в 03:40
поделиться
Другие вопросы по тегам:

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