Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.01.2013, 10:15
Аватар для macdack
партизан, доктор
Отправить личное сообщение для macdack Посмотреть профиль Найти все сообщения от macdack
 
Регистрация: 29.06.2011
Сообщений: 221

null и undefined - в чем разница и применение
комрады, прошу вразумить меня дабы я ясно понял назначение этих сущностей и область применений

пока мне не понятно и кажется что они практически одно и то же и налицо избыточность

например можно ли забыть про undefined и всегда и везде обойтись null

Последний раз редактировалось macdack, 31.01.2013 в 11:28.
Ответить с цитированием
  #2 (permalink)  
Старый 31.01.2013, 10:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 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-е издание. Автор Дэвид Флэнаган
Ответить с цитированием
  #3 (permalink)  
Старый 31.01.2013, 11:27
Аватар для macdack
партизан, доктор
Отправить личное сообщение для macdack Посмотреть профиль Найти все сообщения от macdack
 
Регистрация: 29.06.2011
Сообщений: 221

я это читал в учебнике

мне непонятно почему не использовать для пустой переменной null

зачем вводить дополнительную сущность для обозначения "ничего" ?
если они при сравнении эквивалентны

то есть получается что можно писать программы совсем забыв про undefined, потому что это содержимое пустой переменной и это то же самое что null, это синоним

то есть теоретически js.программист может никогда не использовать undefined
так ?

Последний раз редактировалось macdack, 31.01.2013 в 11:29.
Ответить с цитированием
  #4 (permalink)  
Старый 31.01.2013, 11:36
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

macdack, null применяется к объектам. undefined к переменным и свойствам объекта.
Вроде все ясно...
Ответить с цитированием
  #5 (permalink)  
Старый 31.01.2013, 11:46
Аватар для macdack
партизан, доктор
Отправить личное сообщение для macdack Посмотреть профиль Найти все сообщения от macdack
 
Регистрация: 29.06.2011
Сообщений: 221

переменная это всего лишь контейнер
[объект} это всего лишь набор контейнеров внутри контейнера

null - это содержимое контейнера, значение контейнера
новый пустой контейнер содержит значение undefined которое эквивалентно null
отсюда логический вывод - лексически в языке значение undefined есть избыточное, и язык мог быть построен без него

Вроде все ясно... ))

Последний раз редактировалось macdack, 31.01.2013 в 11:50.
Ответить с цитированием
  #6 (permalink)  
Старый 31.01.2013, 11:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от macdack
мне непонятно почему не использовать для пустой переменной null
Ну не к пустой... А к неопределенной. Запросто можно использовать.

Сообщение от macdack
зачем вводить дополнительную сущность для обозначения "ничего" ?
Ту можно опять сослаться на ту книжку
Цитата:
В отличие от null, значение undefined не является зарезервированным словом
Сообщение от macdack
js.программист может никогда не использовать undefined
так ?
Да.
Ответить с цитированием
  #7 (permalink)  
Старый 31.01.2013, 11:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от macdack
лексически в языке значение undefined есть избыточное, и язык мог быть построен без него

Вроде все ясно...
Ну видал как всё прояснилось!
Ответить с цитированием
  #8 (permalink)  
Старый 31.01.2013, 11:56
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от ksa
null применяется к объектам. undefined к переменным и свойствам объекта.
Это оказалось ошибочным высказыванием.
Просто null по типу объект, а undefined - нет. И не более того...
Ответить с цитированием
  #9 (permalink)  
Старый 31.01.2013, 11:57
Аватар для macdack
партизан, доктор
Отправить личное сообщение для macdack Посмотреть профиль Найти все сообщения от macdack
 
Регистрация: 29.06.2011
Сообщений: 221

Сообщение от ksa Посмотреть сообщение
Ну не к пустой... А к неопределенной.
рассуждайте ясно - пустой контейнер он и есть неопределенный

когда вы его заполняете пустотой null он также неопределенный, ибо жаваскрипт при сравнении не делает различия
Ответить с цитированием
  #10 (permalink)  
Старый 31.01.2013, 12:00
Аватар для macdack
партизан, доктор
Отправить личное сообщение для macdack Посмотреть профиль Найти все сообщения от macdack
 
Регистрация: 29.06.2011
Сообщений: 221

Сообщение от ksa Посмотреть сообщение
Это оказалось ошибочным высказыванием.
Просто null по типу объект, а undefined - нет. И не более того...
не знаю как вы а я называю объектом не всё подряд
грубо говоря - переменная это клетка, а набор клеток это тело-объект

практически не важно что null это тип-объект
в первую очередь это элементарное значение-содержимое контейнера означающее отсутствие содержимого
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что занимает меньше памяти, null или undefined? jsuse Общие вопросы Javascript 12 27.05.2012 23:20
Растянуть элемент по содержимому AnToxa Элементы интерфейса 11 09.04.2012 22:13
Чем отличается undefined от null hrundel Общие вопросы Javascript 21 01.01.2011 22:06
Операторы сравнения, null, undefined, number 0, empty string("") alexeis Общие вопросы Javascript 5 28.09.2010 21:11