Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как работают операции сравнения > < == >= <= с различными типами данных? (https://javascript.ru/forum/misc/29481-kak-rabotayut-operacii-sravneniya-%3D%3D-%3D-%3D-s-razlichnymi-tipami-dannykh.html)

almac 29.06.2012 12:59

Как работают операции сравнения > < == >= <= с различными типами данных?
 
Я уже совсем запутался. На сайте в учебнике learn.javascript.ru сказано, что при сравнении типы данных приводятся к числам, и затем сравниваются. Но в любом случае на выходе, как я понимаю, должно получится булевое значение.
1. Например, if (true > false) вернет true, так как true (скорее всего) приводится к 1, а false - к 0.
2. NaN > 2 вернет false, так как в операциях с числами, где участвует NaN, там значение всего выражение приводится к NaN, что соответствует false (если я все верно понимаю)
3. true > undefined вернет false, так как undefined должно приводиться к NaN (ведь сказано же в учебнике, что сравниваются ЧИСЛА), но тогда возникают ВОПРОСы:

- Почему NaN == undefined будет false?? Ведь undefined по идее приводится к NaN во время сравнивания
- И почему null == undefined приводит к true?? Ведь null должен привестись к 0, а undefined к NaN.


Прошу вас, разъясните, как работает операция сравнивания в Javascript

nerv_ 29.06.2012 13:52

almac, это читали?

bes 29.06.2012 13:59

В спецификации описаны алгоритмы работы операторов, там наверное лучше и читать
http://es5.javascript.ru/x11.html#x11.8

almac 29.06.2012 14:07

Ужасно! Это ж надо было такое придумать... Всем спасибо за ссылки, придется привыкать к таким нестандартным обработкам простых действий


Часовой пояс GMT +3, время: 18:51.