Чем null отличается от indefined

Каждый раз, когда что-то идет не так, вы используете переменную, которая еще не была инициализирована, пытаетесь получить значение несуществующего (или удаленного) свойства, обращаетесь к отсутствующему элементу массива — вы сталкиваетесь с undefined.

Что это такое, спросите вы? Ничего сложного. Считайте, что undefined — это значение, которое присваивается тому, что еще не имеет значения (другими словами, не было инициализировано).

Какая польза от undefined? Оно позволяет проверить, было ли присвоено значение переменной (или свойству, или элементу массива).

 

 

Но в DOM для несуществующего идентификатора getElementByld возвращает null, а не undefined. Что такое null и почему getElementById не возвращает undefined?

 

Да, здесь часто возникает путаница. Во многих языках существует концепция значения, представляющего «отсутствие объекта». И это вполне нормально — возьмем хотя бы метод document.getElementById. Он ведь должен возвращать объект, верно? А что произойдет, если он не сможет вернуть объект? Тогда он должен вернуть какой-то признак, означающий: «Здесь мог бы быть объект, но, к сожалению, его нет». Именно этот смысл заложен в null.

Переменной также можно явно присвоить null:

var killerObjectSomeday = null;

Что может означать присваивание null переменной? Например, «Когда-нибудь в будущем мы присвоим объект этой переменной, но пока еще не присвоили».

Если в этот момент вы недоумеваете и спрашиваете: «Хмм, а почему они не использовали undefined?» — знайте, что вы не одни. Это решение было принято в самом начале существования javascript. Разработчики хотели иметь одно значение для переменных, которые еще не были инициализированы, и другое для обозначения отсутствия объекта. Может, решение не самое красивое и немного избыточное, но дело обстоит именно так. Просто запомните смысл каждого из значений (undefined и null) и знайте, что null чаще всего используется там, где объект еще не создан или не найден, а undefined — для неинициализированных переменных, отсутствующих свойств объектов или отсутствующих значений в массивах.

 


 
var test10 = null; 
console.log(typeof test10); // object
 

 

 



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы