3

重複の可能性:
Javascript null または未定義

nullは予約語ですが、キーワードではありません。
したがって、上書きすることはできません。

undefined上書き可能な組み込みグローバルです。これが、jQuery が IIFE で再定義する理由です。上書きされていないことを確認するだけです。

ES 5で指定されているように、それぞれをいつ使用するかの技術的な違いは何ですか。

私は、ブラウザによって、作成されていない localStorage プロパティを null または未定義に設定するブラウザを見たことがあることを知っています。

localStorage.not_defined === null // sometimes

localStorage.not_defined === undefined // sometimes

この場合、一般的に、ES 5 はそれらの使用法をどのように指定しますか?

ES5は明確化を提供しません:

8.1 未定義型 未定義型には、未定義と呼ばれる値が 1 つだけあります。値が割り当てられていない変数の値は未定義です。

8.2 Null 型 Null 型には、null と呼ばれる値が 1 つだけあります。

http://www.ecma-international.org/publications/standards/Ecma-262.htm

4

2 に答える 2

5

これら2つの区別はかなりあいまいであり、仕様では明確にされていません。

常識は次のとおりですundefined。割り当てられたことのない変数であり、存在しないプロパティです。

nullただし、値が割り当てられていないことを示す変数またはプロパティの状態です。

結果セットが空であることを示すためにgetElement...明示的に戻るなどの一部のメソッド。null関数にreturnステートメントがない場合は、undefined代わりに暗黙的に返されます。

一般に、常に割り当てnull、決して割り当てないundefinedでください。

于 2012-09-26T20:16:15.757 に答える
3

null は値です。Nothing の値は null です。

undefined は値の欠如です。

このように使用する必要があります。

undefined を何にも割り当てるべきではありません。それは目的を破ります。既存のプロパティを未定義にしたい場合は、delete キーワードを使用します。

一方、null は変数に割り当てる正当な値です。

jQuery はそのクロージャに undefined 変数を追加します。これは、typeof a === 'undefined' を記述するよりも === undefined をテストする方が簡単だからです。

于 2012-09-26T20:06:27.593 に答える