Существует много дискуссий о том, что null
в JavaScript на самом деле есть. Например, Why is null an object and what's the difference between null and undefined?.Является ли пустой регулярный примитив в JavaScript?
MDN списки null
среди примитивных ценностей и заявляет, что:
специальное ключевое слово, обозначающее нулевое значение; нуль также примитивный значение
(выше выделено мной)
Моя последняя ссылка будет Programming JavaScript Applications книги Эрика Эллиота, который в своем Chapter 3. Objects говорит следующее:
В JavaScript, ... даже примитивные типы получить обработку объекта, когда вы ссылаетесь на них со свойством доступа. Они автоматически включаются в объект , который вы можете назвать их прототипом.
Примитивные типы ведут себя как объекты, когда вы используете обозначения доступа к свойствам, но вы не можете назначать им новые свойства. Примитивы временно обернут объектом, а затем этот объект сразу же выброшен. Любая попытка присвоения значений свойствам окажется успешной, но последующие попытки получить доступ к этому новому объекту не удастся.
И действительно следующие операторы будут выполняться без проблем:
"1".value = 1;
(1).value = "1";
false.value = "FALSE";
в то время как его один
null.value = "Cannot set property of null";
бросает Uncaught TypeError
. См. JS Fiddle.
Так, по крайней мере, в этом отношении null
ведет себя иначе, чем другие примитивы.
Является null
считается обычный примитивный в JavaScript?
Когда вы пытаетесь получить доступ к свойствам других примитивов, они прозрачно завертываются в объекты, чтобы их можно было связать с их прототипами, и поэтому ошибок нет. 'null' и' undefined' не имеют прототипов, поэтому этого не происходит, следовательно, ошибка. –
Я бы не взял вещи из книг в качестве главы и стиха. Например, сказать: «... пары ключ/значение ... действительно являются объектами» просто неверно. Я предполагаю, что он хотел сказать «коллекцию ключей/ценностей» (ака хэшей), но это просто говорит о небрежности в этой и многих других книгах. – 2014-09-28 16:54:27
@torazaburo - эта часть несущественна для моего предмета. В любом случае мой Fiddle полностью демонстрирует то, что я делал. –