Page 31 - 6105
P. 31

undefined. Інтуїтивно здається, що null / undefined еквівалентні нулю, але це не так.

               Вони ведуть себе по-іншому. Значення null і undefined рівні == один одному і не


               рівні  чомусь  іншому.  Це  жорстке  правило  буквально  прописано  в  специфікації
               мови. При перетворенні в число null стає 0, а undefined стає NaN. Це призводить


               до цікавих наслідків.
                      Некоректний результат порівняння null з 0


                      Порівняємо null з нулем:

                      alert (null> 0); // false

                      alert (null == 0); // false
                      Отже, ми отримали, що null не більше і не дорівнює нулю. А зараз…


                      alert (null> = 0); // true
                      Як  таке  можливо?  Якщо  щось  «більше  або  дорівнює  нулю»,  то  резонно


               вважати, що воно або більше, або дорівнює. Але тут це не так.

                      Справа в тому, що алгоритми перевірки рівності == і порівняння > => <<=

               працюють по-різному.

                      Порівняння рівності призводить до  числа, виходить нуль.  А при перевірці

               рівності  значення  null  і  undefined  обробляються  особливим  чином:  вони

               дорівнюють один одному, але не рівні чомусь ще.

                      В результаті виходить дивна з точки зору здорового глузду ситуація, яку ми

               бачили в прикладі вище.



                      Непорівнюваний undefined

                      Значення undefined взагалі не можна порівнювати:

                      alert (undefined> 0); // false (1)

                      alert (undefined <0); // false (2)

                      alert (undefined == 0); // false (3)








                                                                30
   26   27   28   29   30   31   32   33   34   35   36