10 несуразностей и секретов JavaScript
Опубликовано: 19.06.2017
JavaScript. Причудливый и все-таки прекрасный язык программирования. Если бы Пабло Пикассо был программистом, то он наверняка бы разработал именно JavaScript. Null является объектом, пустой массив эквивалентен false, а функции перебрасываются словно теннисные мячи.
Типы данных и определения
1. null - это объект
Начнем с широко известной странности JavaScript. null является объектом. Сомневаетесь? Ведь данное утверждение противоречит самой сути null . Вот доказательства:
О ЧЕМ НАМ ЛГУТ В СТАЛКЕР ?
alert(typeof null); //Выдаст сообщение 'object'
Несмотря на очевидный факт, nullне является реализацией никакого базового объекта. (Если вы не знали, значения в JavaScript являются реализациями базового объекта. Так, каждое число является реализацией объекта Number, каждый объект является реализацией объекта Object.) Такое положение возвращает нас обратно к практическому смыслу, потому что если nullявляется отсутствием значения, то он не может быть реализацией какого-либо объекта. Следовательно следующее выражение возвращает false:
alert(null instanceof Object); //Выдаст сообщение 'false'2. NaN - это число
Считаете факт представления null объектом странным? Попробуйте проверить NaN! Он оказывается числом! Кроме того, NaN не равен самому себе!
alert(typeof NaN); //Выдаст сообщение 'Number' alert(NaN === NaN); //Выдаст сообщение 'false'В действительности NaN не равен ничему. Единственный способ проверить значение NaN - функция isNaN().
3. Массив без ключей == false
Другая причуда JavaScript:
alert(new Array() == false); //Выдаст сообщение 'true'Чтобы понять, что происходит,, нужно понимать концепцию истина и ложь . В данном случае имеется некий вид отношений истина/ложь, которая может привести в восторг философа или специалиста по логике.