0

変数が未定義かどうかを確認する最良の方法は知っています

if ( typeof( something ) == "undefined") 

私が理解していないのは、いつ変数が未定義で、いつオブジェクトが未定義なのかということです。たとえば、console.log() 変数を取得すると、

Object {detailedView: undefined}

私の質問は、なぜ私がこれを取得しているのか、単純な未定義ではないのかということです。

4

3 に答える 3

2

a未定義ではありません。定義されています。それはオブジェクトです。そのオブジェクトにはたまたま であるプロパティが含まれていますundefinedが、変数自体は未定義ではありません。

something定義されていないので、undefinedです。

于 2013-06-21T18:24:13.120 に答える
1

ここには 2 つのものがあります: "value"undefinedは、変数が宣言されているがまだ何も割り当てられていないvar a;場合 (つまり )、または実際には値を持たない何かが割り当てられた場合に、変数が指すことができる値です。が存在し、"undefined""monkey" や "collywobble" に似た文字列である string があります。

条件では、演算子の結果が何であるかをテストしています。typeofこれは、文字列「オブジェクト」または「関数」、またはこの場合は「未定義」です。それらは単なる言葉です:

if(typeof a == "undefined")

テストと同じです

if(a == undefined)

そのため、実際のオブジェクトを console.log するとundefined、文字列ではなく値が含まれていることがわかります"undefined"

于 2013-06-21T18:28:19.513 に答える
1

「未定義の変数」(宣言されていない変数) と「未定義の値」(undefined変数またはプロパティ内の値) の違いについて質問していると思います。

var次のキーワードを使用して変数を定義/宣言します。

var myVariable;

それを行うと、その変数の値はundefined次のようになります。

console.log(myVariable); // undefined

変数を宣言しないと、使用できませ

console.log(myOtherVariable); // throws a ReferenceError

... を除くtypeof:

typeof myOtherVariable == "undefined"; // true
于 2013-06-21T18:43:17.890 に答える