понедельник, 15 февраля 2010 г.

Странности JavaScript. Или это всё-таки JS особенности?

Сегодня набрёл на отличную подборку не сразу объяснимых странностей JavaScript. Например:

//1.
Number.MIN_VALUE > 0; // true or false?
//2.
typeof null; // what type?
null === Object; // true or false?
//3.
NaN === NaN; // true or false?
//4.
typeof NaN; // what type?


Как думаете, что каждая из строчек вернёт, хорошенько подумайте. А потом проверьте себя:

  1. true 
  2. object и false
  3. false
  4. number

На самом деле если подумать над этим, то есть вполне логическое объяснение на каждый из пунктов, но не все так сразу очевидно. Например, необычное поведение NaN — требование IEEE 754, общее для всех языков программирования. Необходимо чтобы типу Number можно было присвоить NaN, но при этом не был равен ничему другому. Так же, с логической точки зрения можно объяснить все вышеприведенные пункты, все были при здравом уме и памяти, когда разработчики закладывали такое поведение JS.

Кому интересно продолжение, есть целый сайт, посвящённый "странностям" JS - wtfjs.com

Комментариев нет:

Отправить комментарий

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting