Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чем отличается undefined от null (https://javascript.ru/forum/misc/14132-chem-otlichaetsya-undefined-ot-null.html)

hrundel 31.12.2010 19:25

Чем отличается undefined от null
 
В чём отличие undefined от null?
Например такой код:
alert(document.getElementById('ooo2'));
при обращении к несуществующему элементу на html-странице выдаст "null".

А такой код:
var arr=new Array(3);
alert(arr[0]);
при обращении к несуществующему элементу массива выдаст "undefined".

Или ещё пример, когда переменной можно прям назначить значение, что она неопределена
var dd=undefined;
alert(dd);
Выдаст "undefined".

Чем различаются null и undefined? В каких случаях мы должны ожидать null, а в каких undefined?

B@rmaley.e><e 31.12.2010 19:31

null означает "ничего".
undefined означает, что значение не определено.

dmitriymar 31.12.2010 21:06

Цитата:

Сообщение от hrundel
var arr=new Array(3);
alert(arr[0]);
при обращении к несуществующему элементу массива выдаст "undefined".

почему не существующему? ты место под массив выделил и массив инициализировал
var arr=new Array(3);
var dd=undefined;
alert(dd);
Выдаст "undefined".
а здесь вопрос сложный-не думал что ты присваиваешь в этом случае значение а не присваиваешь тип?
ты присваиваеш дд значение переменной ундефенет-какая при этом у тебя не определена и в этом случае она становится глобальной переменной с неопределённым значением.

hrundel 31.12.2010 21:14

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 85909)
null означает "ничего".
undefined означает, что значение не определено.

Немного смущает, что при обращении к несуществующему элементу на странице мы получаем null, хотя логичнее undefined (???).

exec 31.12.2010 21:34

hrundel,
null это когда такое значение могло бы быть, но его нету
undefined это когда такого значения и быть не должно

window.kslsfkl; // Нет
window.onmouseover; // null


Можно и так объяснить.

SV0L0CH 31.12.2010 22:17

Дополнительная информация:
alert([typeof null,typeof undefined]);​

dmitriymar 31.12.2010 22:57

Цитата:

Сообщение от SV0L0CH
alert([typeof null,typeof undefined])

интересно... определяется тип типа....где логика в этом?

dmitriymar 31.12.2010 23:04

SV0L0CH,
что на это скажешь?

var undefined=7;
alert([typeof null,typeof undefined]);


ну значение null не буду пытаться изменить поскольку он идёт как зарезервированное слово также как и любой из операторов.
бормалей прав

Sweet 31.12.2010 23:21

Цитата:

Сообщение от dmitriymar
почему не существующему? ты место под массив выделил и массив инициализировал

hrundel прав - это именно обращение к несуществующему элементу. А вот выделение места под массив - это что-то не из js. Для размышления:
var a1 = [], a2 = new Array(3);
a1.length = 3;
alert(a1.toString() === a2.toString());
Или length тоже выделяет что-то?:)
И, кста, присвоение переменной типа - это, типа, что-то новенькое:)

dmitriymar 01.01.2011 00:09

Sweet,
ты хоть понял что ты написал? известно имя известна длинна-и не существует?я не вижу отличия в том что ты объявил сразу массив опр длинны или потом ему длину объявил. именно тот вариант когда от перемены мест слагаемых ничего не меняется

B@rmaley.e><e прав
это обращение к сущ элементу ну тип значения которого не определён. проведу аналогию -представь себе пустой контейнер ж.д. -ты знаешь его тип цвет инвентарный номер и т.д.-это условно имя какое определено. но пока ты не положиш в него какойто тип груза-он не станет контейнером для перевозки какого то вида груза.тоесть контейнер для перевозки неизвестно чего-контейнер.ундефенет.
ну а если его нет-то его нет вообще-ноль


Часовой пояс GMT +3, время: 21:05.