web-dev-qa-db-ja.com

変数がJavaScriptに読み込まれているかどうかを確認するにはどうすればよいですか?

次のように、特定のオブジェクトがロードされているかどうかを確認するには、どうすればロードできますか?

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
25
SeanDowney

それがオブジェクトである場合、それが null または ndefined であるかどうかを確認し、そうである場合はそれをロードすることができるはずです。

if (myObject === null || myObject === undefined) {
   myObject = loadObject();
}

typeof 関数を使用することも、提供されたオブジェクトのタイプを返すため、オプションです。ただし、オブジェクトがロードされていない場合は nullまたはundefined が返されるため、読みやすさに関して個人の好みに合わせて少し煮詰められる可能性があります。

37
rjzii
if(typeof(o) != 'object') o = loadObject();
27
Tom Ritter
myObject = myObject || loadObject();
4
Bruce

ロードによって定義されたという意味の場合は、typeof関数を使用して変数のタイプを確認できます。 [〜#〜] however [〜#〜] typeofにはいくつかの癖があり、オブジェクト、配列、およびnullをオブジェクトとして識別します

alert(typeof(null));

Nullを定義済みオブジェクトとして識別すると、プログラムが失敗する可能性があるため、次のように確認してください

if(null !== x && 'object' == typeof(x)){
    alert("Hey, It's an object or an array; good enough!");
}
3
Alan Storm

「ロードされた」という意味がわかりません...変数objectが存在し、必要な型がありませんか?その場合、次のようなものが必要になります。

_function isObjectType(obj, type) {
    return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}
_

次にif (isObjectType(object, MyType)) { object = loadObject(); }を使用します。

テスト前にobjectに何も入力されていない場合(つまり、_typeof object === 'undefined'_)、次のものが必要です。

_if ('undefined' === typeof object) { object = loadObject(); }
_
3
Grant Wagner

おそらく、特定のオブジェクトがdefinedかどうかを確認する必要があります。

特に、それがいつ起動するかを確認するためにsetTimeoutを使用して非同期スレッドで行われる場合。

  var generate = function()
  { 
      window.foo = {}; 
  }; 
  var i = 0;
  var detect = function()
  {
     if( typeof window.foo == "undefined" ) 
     {
           alert( "Created!"); 
           clearInterval( i );
     }
   };
   setTimeout( generate, 15000 ); 
   i = setInterval( detect, 100 ); 

理論的には、window.fooの存在を検出する必要があります。

3
Kent Fredric

カスタムオブジェクトを検出する場合:

// craete a custom object
function MyObject(){

}

// check if it's the right kind of object
if(!(object instanceof MyObject)){
   object = new MyObject();
}
2
Zach

ショートカットを使用することもできますif(obj)

2
ScottKoon
if (!("someVar" in window)) {
  someVar = loadObject();
}

jSが以前にグローバルsomeVarに割り当てたか、最上位のvar someVarを宣言したかどうかがわかります。

ロードされた値がundefinedであっても機能します。

1
Mike Samuel

typeof(obj)は、他の可能な値の中でクラスのオブジェクトの「オブジェクト」を返します。

1
Loren Segal