JavaScriptがnull
またはundefined
を返すタイミングについて本当に混乱しています。また、異なるブラウザはこれらを異なる方法で返しているようです。
null
/undefined
の例を、それらを返すブラウザで教えてください。
undefined
の側面については明確になりましたが、null
については100%明確ではありません。空白の値に似ていますか?
例えば。値が設定されていないテキストボックスがあります。その値にアクセスしようとすると、null
またはundefined
になりますが、それらは似ていますか?
呼び出しがノードを返さない場合、DOMメソッドgetElementById()
、nextSibling()
、childNodes[n]
、parentNode()
などはnull
(定義されているが値を持たない)を返します。オブジェクト。
プロパティは定義されていますが、それが参照するオブジェクトは存在しません。
これは、数少ない場合の1つですnot同等性をテストしたい-
if(x!==undefined)
は、null値に対してtrueになります
ただし、undefined
またはnull
のいずれでもない値の場合、if(x!= undefined)
はtrue(のみ)になります。
さまざまなシナリオに対して未定義になります。
Varで変数を宣言しますが、決して設定しません。
var foo;
alert(foo); //undefined.
設定したことがないオブジェクトのプロパティにアクセスしようとしました。
var foo = {};
alert(foo.bar); //undefined
提供されなかった引数にアクセスしようとしました。
function myFunction (foo) {
alert(foo); //undefined.
}
Cwolvesが別の答えのコメントで指摘したように、値を返さない関数。
function myFunction () {
}
alert(myFunction());//undefined
通常、nullは変数またはプロパティに意図的に設定する必要があります(設定せずに表示できる場合のコメントを参照してください)。さらに、nullはobject
型で、undefinedはundefined
型です。
また、JSONではnullは有効ですが、undefinedは無効であることに注意する必要があります。
JSON.parse(undefined); //syntax error
JSON.parse(null); //null
私は何かを見逃しているかもしれませんが、わかりました、あなたはundefined
だけを取得します
更新: OK
undefined
を取得します...
...存在しないオブジェクトのプロパティにアクセスしようとすると:
var a = {}
a.foo // undefined
...変数を宣言したが初期化していない場合:
var a;
// a is undefined
...値が渡されなかったパラメーターにアクセスする場合:
function foo (a, b) {
// something
}
foo(42); // b inside foo is undefined
...関数が値を返さない場合:
function foo() {};
var a = foo(); // a is undefined
いくつかの組み込み関数は、何らかのエラーでnull
を返す場合がありますが、そうであれば、文書化されます。 null
はJavaScriptの具体的な値ですが、undefined
はそうではありません。
通常、それらを区別する必要はありません。変数の可能な値に応じて、if(variable)
を使用して値が設定されているかどうかをテストするだけで十分です(null
およびundefined
はfalse
に評価されます)。
また、異なるブラウザはこれらを異なる方法で返しているようです。
具体例を挙げてください。
このトピックに関して、仕様(ecma-262)は非常に明確です。
本当に便利でわかりやすいので、共有します。-ここで Equality algorithm を見つけます-ここで Strictを見つけます等式アルゴリズム
私は、Mozilla開発者サイトのセクションの同一性から「抽象的平等、厳密な平等、および同価値」と読みました。
それがあなたのお役に立てば幸いです。
プロパティが定義されていない場合、プロパティは未定義です。 nullはオブジェクトです。タイプはnullです。 undefinedはオブジェクトではなく、その型は未定義です。
これは、違いを説明し、いくつかの例を示す良い記事です。