31.01.2013, 10:15
|
|
партизан, доктор
|
|
Регистрация: 29.06.2011
Сообщений: 221
|
|
null и undefined - в чем разница и применение
комрады, прошу вразумить меня дабы я ясно понял назначение этих сущностей и область применений
пока мне не понятно и кажется что они практически одно и то же и налицо избыточность
например можно ли забыть про undefined и всегда и везде обойтись null
Последний раз редактировалось macdack, 31.01.2013 в 11:28.
|
|
31.01.2013, 10:48
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Цитата:
|
Ключевое слово null в JavaScript имеет специальный смысл. Обычно считается,
что у значения null объектный тип и оно говорит об отсутствии объекта. Значе
ние null уникально и отличается от любых других. Если переменная равна null,
следовательно, в ней не содержится допустимого объекта, массива, числа, стро
ки или логического значения.
|
Цитата:
|
Еще одно специальное значение, иногда используемое в JavaScript, – undefined.
Оно возвращается при обращении либо к переменной, которая была объявлена,
но которой никогда не присваивалось значение, либо к свойству объекта, кото
рое не существует. Заметьте, что специальное значение undefined – это не то же
самое, что null.
Хотя значения null и undefined не эквивалентны друг другу, оператор эквива
лентности == считает их равными.
|
Разницу я выделил.
Цитата:
|
Рассмотрим следующее выражение:
my.prop == null
Это сравнение истинно, либо если свойство my.prop не существует, либо если оно
существует, но содержит значение null. Поскольку значение null и undefined обо
значают отсутствие значения, это равенство часто оказывается тем, что нам
нужно. Однако когда действительно требуется отличить значение null от значе
ния undefined, нужен оператор идентичности === или оператор typeof
|
(c) «JavaScript. Подробное руководство», 5-е издание. Автор Дэвид Флэнаган
|
|
31.01.2013, 11:27
|
|
партизан, доктор
|
|
Регистрация: 29.06.2011
Сообщений: 221
|
|
я это читал в учебнике
мне непонятно почему не использовать для пустой переменной null
зачем вводить дополнительную сущность для обозначения "ничего" ?
если они при сравнении эквивалентны
то есть получается что можно писать программы совсем забыв про undefined, потому что это содержимое пустой переменной и это то же самое что null, это синоним
то есть теоретически js.программист может никогда не использовать undefined
так ?
Последний раз редактировалось macdack, 31.01.2013 в 11:29.
|
|
31.01.2013, 11:36
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
macdack, null применяется к объектам. undefined к переменным и свойствам объекта.
Вроде все ясно...
|
|
31.01.2013, 11:46
|
|
партизан, доктор
|
|
Регистрация: 29.06.2011
Сообщений: 221
|
|
переменная это всего лишь контейнер
[объект} это всего лишь набор контейнеров внутри контейнера
null - это содержимое контейнера, значение контейнера
новый пустой контейнер содержит значение undefined которое эквивалентно null
отсюда логический вывод - лексически в языке значение undefined есть избыточное, и язык мог быть построен без него
Вроде все ясно... ))
Последний раз редактировалось macdack, 31.01.2013 в 11:50.
|
|
31.01.2013, 11:52
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от macdack
|
мне непонятно почему не использовать для пустой переменной null
|
Ну не к пустой... А к неопределенной. Запросто можно использовать.
Сообщение от macdack
|
зачем вводить дополнительную сущность для обозначения "ничего" ?
|
Ту можно опять сослаться на ту книжку
Цитата:
|
В отличие от null, значение undefined не является зарезервированным словом
|
Сообщение от macdack
|
js.программист может никогда не использовать undefined
так ?
|
Да.
|
|
31.01.2013, 11:53
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от macdack
|
лексически в языке значение undefined есть избыточное, и язык мог быть построен без него
Вроде все ясно...
|
Ну видал как всё прояснилось!
|
|
31.01.2013, 11:56
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от ksa
|
null применяется к объектам. undefined к переменным и свойствам объекта.
|
Это оказалось ошибочным высказыванием.
Просто null по типу объект, а undefined - нет. И не более того...
|
|
31.01.2013, 11:57
|
|
партизан, доктор
|
|
Регистрация: 29.06.2011
Сообщений: 221
|
|
Сообщение от ksa
|
Ну не к пустой... А к неопределенной.
|
рассуждайте ясно - пустой контейнер он и есть неопределенный
когда вы его заполняете пустотой null он также неопределенный, ибо жаваскрипт при сравнении не делает различия
|
|
31.01.2013, 12:00
|
|
партизан, доктор
|
|
Регистрация: 29.06.2011
Сообщений: 221
|
|
Сообщение от ksa
|
Это оказалось ошибочным высказыванием.
Просто null по типу объект, а undefined - нет. И не более того...
|
не знаю как вы а я называю объектом не всё подряд
грубо говоря - переменная это клетка, а набор клеток это тело-объект
практически не важно что null это тип-объект
в первую очередь это элементарное значение-содержимое контейнера означающее отсутствие содержимого
|
|
|
|