Чем отличается 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? |
null означает "ничего".
undefined означает, что значение не определено. |
Цитата:
var arr=new Array(3); var dd=undefined; alert(dd); Выдаст "undefined". а здесь вопрос сложный-не думал что ты присваиваешь в этом случае значение а не присваиваешь тип? ты присваиваеш дд значение переменной ундефенет-какая при этом у тебя не определена и в этом случае она становится глобальной переменной с неопределённым значением. |
Цитата:
|
hrundel,
null это когда такое значение могло бы быть, но его нету undefined это когда такого значения и быть не должно window.kslsfkl; // Нет window.onmouseover; // null Можно и так объяснить. |
Дополнительная информация:
alert([typeof null,typeof undefined]); |
Цитата:
|
SV0L0CH,
что на это скажешь? var undefined=7; alert([typeof null,typeof undefined]); ну значение null не буду пытаться изменить поскольку он идёт как зарезервированное слово также как и любой из операторов. бормалей прав |
Цитата:
var a1 = [], a2 = new Array(3); a1.length = 3; alert(a1.toString() === a2.toString());Или length тоже выделяет что-то?:) И, кста, присвоение переменной типа - это, типа, что-то новенькое:) |
Sweet,
ты хоть понял что ты написал? известно имя известна длинна-и не существует?я не вижу отличия в том что ты объявил сразу массив опр длинны или потом ему длину объявил. именно тот вариант когда от перемены мест слагаемых ничего не меняется B@rmaley.e><e прав это обращение к сущ элементу ну тип значения которого не определён. проведу аналогию -представь себе пустой контейнер ж.д. -ты знаешь его тип цвет инвентарный номер и т.д.-это условно имя какое определено. но пока ты не положиш в него какойто тип груза-он не станет контейнером для перевозки какого то вида груза.тоесть контейнер для перевозки неизвестно чего-контейнер.ундефенет. ну а если его нет-то его нет вообще-ноль |
Цитата:
|
элемент уже предопределён что он есть.поскольку длинна массива заданна чётко.поскольку массив это объект и элементы его разнотипные-из этого всё и выходит.обратись к элементы какой выходит за приделы заданного числа и он начнёт существовать, точно также как и переменная какая не существовала начинает существовать и становится при её упоминании ундефинит. (отличие объявления переменной с var и без него)
а вот с деревом дум так не пройдёт поскольку механизм добавления гораздо сложнее и элемент не начнёт существовать только от того что его упомянули |
В JavaScript нет массивов в том понимании, в котором они существуют в других языках. Особенно а-ля С/С++. Ничто под возможные элементы не выделяется. Создание new Array(3) означает лишь создание массива без элементов, свойство length которого равно 3. А свойство length в общем случае вообще не отражает количество элементов в массиве.
http://alljs.ru/articles/array/whatis.html |
dmitriymar,
рекомендую пересмотреть стандарт ECMA, потому что из последнего сообщения видно, что в основном твои "знания" строятся на фантазиях и собственных выводов. Например: Цитата:
|
Цитата:
кто говорит за выделение места в массиве? разговор идёт о том что массив после этого начинает существовать.что в нём не важно-важно что он есть-и это идёт в разрез с утвержением ундефинит это когда нет |
Цитата:
|
Цитата:
|
monolithed,
каж понял что ты говоришь.свойство в этом случае будет выступать как хранилище переменной глоб?(это если утрированно) просто,везде где встречал,утверждалось что именно глоб переменная создаётся. а создаётся глоб переменная как свойство окна или глоб переменная не проверял-главное что действует как глоб переменная |
что-то типа такого))
|
Я думаю, что здесь отталкиваться надо от того, что getElementById() это встроенная функция, а не переменная, поэтому она возвращает такие значения. Но когда мы имеем дело с переменными, то там надо ожидать undefined всегда, когда переменная не определена. Вроде так получается.
Вот ссылки про эту функцию: http://www.w3.org/TR/DOM-Level-2-Cor...ml#ID-getElBId http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Есть ещё NaN, кстати. |
Цитата:
i = false; //переменная не определена, но инициализированна alert(i); //false var i; //переменная определена, но не инициализированна alert(i); //undefined var i = true; //переменная определена и инициализированна alert(i); //true Цитата:
|
удалено.
|
Часовой пояс GMT +3, время: 15:16. |