Подтвердить что ты не робот

Почему (true> null) всегда возвращает true в JavaScript?

Может ли кто-нибудь сказать мне, почему следующий код возвращает true в JavaScript?

console.log(true > null); //returns true
4b9b3361

Ответ 1

null выглядит как false в этом случае, <<22 > как число. true является 1 как число.

1 больше (>), чем 0.

Ответ 2

Они преобразуются в числа, null дает 0 и true дает 1

http://ecma-international.org/ecma-262/5.1/#sec-11.8.5

Если это не тот случай, что оба типа (px) являются String и Тип (py) - String, затем

  • Пусть nx является результатом вызова ToNumber (px). Поскольку px и py             порядок оценки примитивных значений не важен.
  • Пусть ny является результатом вызова ToNumber (py).
Number(null) //0
Number(true) //1

Ответ 3

Может быть, потому что true = 1 где null = 0

Ответ 4

JavaScript делает много типов принуждения в фоновом режиме, и многие результаты, которые вы найдете, не являются полезными (см. http://wtfjs.com/).

В этом случае истинность, которая принудительно равна 1, больше нуля, которая принудительно равна 0. Так как 1 больше 0, результат верен.

Если один из операндов имеет значение Boolean, то логический операнд преобразуется в 1, если оно истинно и +0, если оно ложно.

Из MDN.

Ответ 5

Что происходит, так это то, что реляционные операторы (> в этом случае) выполняют принуждение типа, прежде чем выполнять сравнение. Выполняя ToPrimitive, true получает принуждение к 1, а значение null - 0. Здесь вы можете проверить, как операторы фактически работают здесь

Ответ 6

Код неверен, вам нужно сделать:

console.log(true > typeof null);

Ответ 7

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