Comment vérifier si une variable est chargée en JavaScript?
-
01-07-2019 - |
Question
Comment puis-je savoir si un certain objet a été chargé, et si non, comment peut-il être chargé, comme suit?
if (!isObjectLoaded(someVar)) {
someVar= loadObject();
}
La solution
S'il s'agit d'un objet, vous devriez juste pouvoir vérifier s'il est null ou undefined , puis chargez-le si c'est le cas.
if (myObject === null || myObject === undefined) {
myObject = loadObject();
}
L'utilisation de la fonction typeof est également une option car elle renvoie le type de la objet fourni. Il renverra toutefois null ou undefined si l'objet n'a pas été chargé afin résumer un peu à la préférence personnelle en ce qui concerne la lisibilité.
Autres conseils
if(typeof(o) != 'object') o = loadObject();
myObject = myObject || loadObject();
Je ne suis pas sûr de comprendre ce que vous entendez par "chargé" ... la variable objet
existe-t-elle et n'a tout simplement pas le type souhaité? Dans ce cas, vous voudrez quelque chose comme:
function isObjectType(obj, type) {
return !!(obj && type && type.prototype && obj.constructor == type.prototype.constructor);
}
puis utilisez if (isObjectType (object, MyType)) {object = loadObject (); }
.
Si objet
n'est pas renseigné avant votre test (c'est-à-dire - typeof objet === 'undefined'
), il vous suffit alors de:
if ('undefined' === typeof object) { object = loadObject(); }
Vous voulez probablement voir si un objet donné est défini
Surtout si cela est fait dans un thread asynchrone avec un setTimeout pour vérifier quand il se présente.
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 );
devrait en théorie détecter quand window.foo existe.
Si par chargé vous entendez défini, vous pouvez vérifier le type de la variable avec la fonction typeof. TOUJOURS , typeof a quelques particularités et identifie un objet, un tableau et un null en tant qu'objet
alert(typeof(null));
L'identification d'un null en tant qu'objet défini entraînerait probablement l'échec de votre programme. Vérifiez donc quelque chose comme
.if(null !== x && 'object' == typeof(x)){
alert("Hey, It's an object or an array; good enough!");
}
Vous pouvez aussi simplement utiliser un raccourci si (obj)
Si vous souhaitez détecter un objet personnalisé:
// craete a custom object
function MyObject(){
}
// check if it's the right kind of object
if(!(object instanceof MyObject)){
object = new MyObject();
}
typeof (obj)
renverrait " objet " pour un objet d'une classe parmi d'autres valeurs possibles.
if (!("someVar" in window)) {
someVar = loadObject();
}
vous dira si un JS a déjà été affecté au someVar
global ou a déclaré un niveau supérieur var someVar
.
Cela fonctionnera même si la valeur chargée est undefined
.