Подтвердить что ты не робот

Как проверить, загружена ли переменная в JavaScript?

Как узнать, загружен ли какой-либо объект, а если нет, как он может быть загружен, например:

if (!isObjectLoaded(someVar)) {
    someVar= loadObject();
}
4b9b3361

Ответ 1

Если это объект, вы должны просто проверить, есть ли null или undefined, а затем загрузите его, если он есть.

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

Использование функции typeof также является опцией, так как возвращает тип предоставленного объекта. Однако он вернет null или undefined, если объект не был загружен, поэтому он может немного свести к личным предпочтениям в отношении читаемость.

Ответ 2

if(typeof(o) != 'object') o = loadObject();

Ответ 3

myObject = myObject || loadObject();

Ответ 4

Я не уверен, что вы подразумеваете под "загруженным"... существует ли переменная 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(); }

Ответ 5

Вероятно, вы хотите узнать, определен ли данный объект

Особенно, если это сделано в асинхронном потоке с параметром 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.

Ответ 6

Если при загрузке вы имеете в виду определенное значение, вы можете проверить тип переменной с помощью функции typeof. ОДНАКО typeof имеет несколько причуд и будет идентифицировать объект, массив и null как объект

alert(typeof(null));

Идентификация нуля как определенного объекта, вероятно, приведет к сбою вашей программы, поэтому проверьте что-то вроде

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

Ответ 7

Если вы хотите обнаружить пользовательский объект:

// craete a custom object
function MyObject(){

}

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

Ответ 8

Вы также можете использовать ярлык if(obj)

Ответ 9

typeof(obj) будет возвращать "объект" для объекта класса среди других возможных значений.

Ответ 10

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

сообщит вам, был ли какой-либо JS ранее назначен глобальному someVar или объявлен верхний уровень var someVar.

Это будет работать, даже если загруженное значение undefined.