Странное поведение JavaScript: когда null одновременно и больше, и меньше нуля

Недавно мы рассмотрели случай, когда СУБД MySQL начинает вести себя странно, портит данные и не генерирует при этом сообщение об ошибке. В этот раз о забавной странности языка JavaScript.

Сюрпризы JavaScript

Следует сразу сказать, что это не глюк — этот фокус работает и в Google Chrome, и в Mozilla Firefox. Более того, такое поведение соответствует спецификации языка. И всё же... Откройте консоль вашего браузера и напечатайте:

null > 0;
null == 0;
null >= 0;

Попробуйте сначала отгадать результаты сравнений самостоятельно, а потом посмотрите на правильные ответы ниже:

JavaScript: null and zero

Казалось бы, полное отсутствие логики. null не больше нуля и не равен ему, но null больше или равен нулю. У разработчиков языка поехала крыша?

Нет. Вот тут спец по JS накатал 5-страничное исследование и объяснение. Если говорить кратко, операторы сравнения используют разные алгоритмы: Abstract Relational Comparison Algorithm и Abstract Equality Comparison Algorithm, которые дают разные результаты. В рамках своих задач они дают правильные и логичные результаты, но когда разные операторы используются в одном контексте, то и случаются такие сюрпризы.
Ваша оценка: Нет Средняя оценка: 5 (2 votes)

Минус на минус дает плюс, так и сдесь false и false выходит true. Все логично)

Админ, рисуй капчи нормально, фиг угадаешь что написано..

Ваша оценка: Нет Средняя оценка: 5 (3 votes)

Да... с капчей тут просто издеваются над народом, видно посетители не нужны

Ваша оценка: Нет Средняя оценка: 3 (2 votes)
Texnoline

Дык обьяснили же, боремся со спамом! Читать комментарии автора надо!;) Или читать спам, лучше и удобнее...

Ваша оценка: Нет
Отправить комментарий
КАПЧА
Вы человек? Подсказка: зарегистрируйтесь, чтобы этот вопрос больше никогда не возникал. Кстати, анонимные ссылки запрещены.
CAPTCHA на основе изображений
Enter the characters shown in the image.