2016-11-12 15 views
1

なぜブラウザはvar null;のエラーを投げますか?javascript `var undefined`はOKですが、` var null`はエラーを投げる

私はJavascript Garden-undefinedを読んでおり、私はundefinednullとは異なるグローバル変数であることを知っています。

しかし、私は対照的にvar null;
を行うときに、それはエラーをスローし、なぜそのことについて、単に好奇心、var Number=123var Boolean=123は、var Object=123は、var undefined=123など、(役に立たないが)、それは大丈夫です。

私が知る限り、nullはJavaScriptの予約語ではありません。それはプリミティブ型でなければなりません。

varnullとどのようにして正確に動作しますか?

+0

"また、リテラルのnull、true、およびfalseは、ECMAScriptの識別子として使用できません。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords – mplungjan

+0

@mplungjanありがとう、それは便利です。私はNullLiteralとBooleanLiteralsを以前は知らず、実際にはパズルですなぜ私はあなたがそれが重複だと思うか知りたいのですが、私が下投票をしたらこのアンカーを削除すべきですか? – PageYe

+0

私はしようとしましたが、 "null"は保証された単語であるという正式な文書は見つかりません - 私たちは皆それに気付き、私は個人的に気にしません。私は予約されるかもしれない変数名を使用しません。クールなテスターです:https://mothereff.in/js-variables – mplungjan

答えて

0

差はnullreserved identifierであり、undefinedではありません。ドキュメントから

リテラルのnullで、真、偽はECMAScriptの中の識別子として使用することはできません。

これは文法定義の一部ですが、グローバル変数は(通常)オーバーライドできるものです。

+0

私はあなたに完全に同意しません。ヌルは予約されたキーワードではありません。それは単なるリテラルです。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Literals – PageYe

+2

@mplungjanのコメントも非常に具体的なので、ここでそれを繰り返します: "さらに、リテラル'null'、' true'、 'false' **はECMAScriptの識別子**として使用できません。 'undefined 'のような規定はありません。おそらく、Eichからの手紙以外のものよりも公式なものがほしいのか分からないのでしょうか? – tadman