Сегодня набрёл на отличную подборку не сразу объяснимых странностей 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?
Как думаете, что каждая из строчек вернёт, хорошенько подумайте. А потом проверьте себя:
- true
- object и false
- false
- number
На самом деле если подумать над этим, то есть вполне логическое объяснение на каждый из пунктов, но не все так сразу очевидно. Например, необычное поведение NaN — требование IEEE 754, общее для всех языков программирования. Необходимо чтобы типу Number можно было присвоить NaN, но при этом не был равен ничему другому. Так же, с логической точки зрения можно объяснить все вышеприведенные пункты, все были при здравом уме и памяти, когда разработчики закладывали такое поведение JS.
Кому интересно продолжение, есть целый сайт, посвящённый "странностям" JS - wtfjs.com
Комментариев нет:
Отправить комментарий