変数が未定義かどうかを確認する最良の方法は知っています
if ( typeof( something ) == "undefined")
私が理解していないのは、いつ変数が未定義で、いつオブジェクトが未定義なのかということです。たとえば、console.log() 変数を取得すると、
Object {detailedView: undefined}
私の質問は、なぜ私がこれを取得しているのか、単純な未定義ではないのかということです。
変数が未定義かどうかを確認する最良の方法は知っています
if ( typeof( something ) == "undefined")
私が理解していないのは、いつ変数が未定義で、いつオブジェクトが未定義なのかということです。たとえば、console.log() 変数を取得すると、
Object {detailedView: undefined}
私の質問は、なぜ私がこれを取得しているのか、単純な未定義ではないのかということです。
a
未定義ではありません。定義されています。それはオブジェクトです。そのオブジェクトにはたまたま であるプロパティが含まれていますundefined
が、変数自体は未定義ではありません。
something
定義されていないので、undefined
です。
ここには 2 つのものがあります: "value"undefined
は、変数が宣言されているがまだ何も割り当てられていないvar a;
場合 (つまり )、または実際には値を持たない何かが割り当てられた場合に、変数が指すことができる値です。が存在し、"undefined"
"monkey" や "collywobble" に似た文字列である string があります。
条件では、演算子の結果が何であるかをテストしています。typeof
これは、文字列「オブジェクト」または「関数」、またはこの場合は「未定義」です。それらは単なる言葉です:
if(typeof a == "undefined")
テストと同じです
if(a == undefined)
そのため、実際のオブジェクトを console.log するとundefined
、文字列ではなく値が含まれていることがわかります"undefined"
。
「未定義の変数」(宣言されていない変数) と「未定義の値」(undefined
変数またはプロパティ内の値) の違いについて質問していると思います。
var
次のキーワードを使用して変数を定義/宣言します。
var myVariable;
それを行うと、その変数の値はundefined
次のようになります。
console.log(myVariable); // undefined
変数を宣言しないと、使用できません。
console.log(myOtherVariable); // throws a ReferenceError
... を除くtypeof
:
typeof myOtherVariable == "undefined"; // true