2016-11-12 2 views
1

Почему браузер бросает ошибку для var null;?почему javascript `var undefined` в порядке, но ошибка` var null` throw

Я читаю Javascript Garden-undefined и знаю undefined является глобальной переменной, отличной от null.

Но я просто любопытно, что, почему он бросает ошибку, когда делают var null;
в отличие от этого, когда var Number=123, var Boolean=123, var Object=123, var undefined=123 (хотя бесполезно), и т.д., это нормально.

Насколько я знаю, null не зарезервированное слово и ключевое слово в JavaScript. Он должен быть примитивным типом.

Как var работает точно по отношению к null?

+0

«Кроме того, литералы null, true и false не могут использоваться в качестве идентификаторов в ECMAScript». https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords – mplungjan

+0

@mplungjan спасибо, и это полезно. Я не знаю NullLiteral и BooleanLiterals раньше, и это действительно головоломка для me.I хочу знать, почему вы думаете, что это дубликат. Должен ли я удалить этого anwser, если я получил голос? – PageYe

+0

Я пробовал, но я не могу найти официальный документ, в котором говорится, что «null» является обязательным словом - мы все согласны с этим, и мне лично все равно. Я никогда не использую имена переменных, которые МОЖЕТ быть зарезервированы. Вот крутой тестер: https://mothereff.in/js-variables – mplungjan

ответ

0

Разница null - reserved identifier и undefined - нет.

Из документации:

литералов нуль, правда, и ложь не могут быть использованы в качестве идентификаторов в ECMAScript.

Это часть определения грамматики, а глобальные переменные - это то, что вы можете (обычно) переопределить.

+0

Я не совсем согласен с вами. Нет, это не зарезервированное ключевое слово. Это просто буквальное. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Literals – PageYe

+2

Комментарий от @mplungjan также весьма специфичен, и я повторю его здесь: «Кроме того, литералы 'null',' true' и 'false' ** не могут использоваться как идентификаторы ** в ECMAScript." Нет такого положения для 'undefined'. Я не знаю, что вы хотите, чтобы быть более официальным, чем письмо, кроме письма от Эйха с восковой печатью, возможно? – tadman