Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
parseInt('08'); // 0
0.1 + 0.2 === 0.3 // false
Здесь есть одна особенность и связана она с оператором typeof, который часто может сбивать с толку, если не знать, как он работает. В большей мере это относится к значению null: несмотря на то, что тип null-a, по определению, Null, typeof для этого значения выдаёт «object»:
alert(typeof null); // «object»
А дело в том, что оператор typeof возвращает строковое значение, взятое из жёстко закреплённой таблицы, где прописано: «для null — возвращать „object“.
Причины этого в стандарте не разъясняются, однако B. Eich (создатель Javascript) отмечал, что null, в отличии от undefined (который означает неопределённость, „нет значения“), используется в большинстве случаев там, где фигурируют объекты, т.е. является некой сущностью, тесно связанной с объектами (конкретно, означающей нулевую ссылку на объект, „пустышку“, возможно, зарезервировавшую место для будущих целей). Но, в некоторых черновиках (например, в невышедшем ECMAscript4 aka Javascript 2.0), был заведён документ, где данный „феномен“ описан, как обычный баг. Также, данный баг поднимался в одном из баг-треккеров, в котором B. Eich также участвовал; в итоге было решено оставить typeof null, как есть, т.е. „object“, хотя сам стандарт ECMA-262-3 описывает тип null-a, как Null.
var wtf = somevar = {};
somevar.msg = 'hey, wtf';
alert(wtf.msg); //o_O wtf?
jQuery.fn = jQuery.prototype = {...}// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;typeof null; // object null === Object; // false /* null, хоть и имеет тип "object", не является Object'ом */
var x = {};
typeof x; // object
x === Object; // false
/*
x, хоть и имеет тип "object", не является Object'ом
*/
=== использовать instanceof? Будет веселее (хотя тоже всё логично):
var x = {};
null instanceof Object; // false
x instanceof Object; // true
Ох уж этот javascript