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

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

25
задан fent 23 October 2011 в 08:38
поделиться

8 ответов

Если это - объект тогда, необходимо просто быть в состоянии проверить, чтобы видеть, ли это пустой указатель или не определено , и затем загрузите его, если это.

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

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

37
ответ дан John McDonald 28 November 2019 в 17:52
поделиться
if(typeof(o) != 'object') o = loadObject();
27
ответ дан Tom Ritter 28 November 2019 в 17:52
поделиться

Я не уверен, под чем Вы подразумеваете "загруженный"..., переменная 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 28 November 2019 в 17:52
поделиться

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

Особенно, если его сделанный в асинхронном потоке с 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 28 November 2019 в 17:52
поделиться

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

alert(typeof(null));

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

if(null !== x && 'object' == typeof(x)){
    alert("Hey, It's an object or an array; good enough!");
}
3
ответ дан Alan Storm 28 November 2019 в 17:52
поделиться

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

2
ответ дан ScottKoon 28 November 2019 в 17:52
поделиться

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

// craete a custom object
function MyObject(){

}

// check if it's the right kind of object
if(!(object instanceof MyObject)){
   object = new MyObject();
}
2
ответ дан Zach 28 November 2019 в 17:52
поделиться

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

1
ответ дан Loren Segal 28 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: