Hé les gars, j'ai un code jQuery-JavaScript et il est fait par une variable non définie.

J'essaie d'ignorer l'erreur (undefined) en faisant ce code:

if(typeof undefined_var !== "undefined"){
    /*My code is here*/
}else{
    /*create variable*/
    /*My code is here*/
}

Mais le problème est que j'ai beaucoup de variables et que je dois utiliser un gros code comme celui-ci:

if(typeof undefined_var1 !== "undefined" && typeof undefined_var2 !== "undefined" && typeof undefined_var3 !== "undefined" /* && more */ ){

Et ce n'est pas optimisé, je cherche quelque chose de mieux que ça comme ça:

if(undefined_var1 && undefined_var2 && undefined_var3)

Y en a-t-il de toute façon?

1
Golden Guard 19 mai 2020 à 16:37

3 réponses

Meilleure réponse

Vous pouvez utiliser try and catch pour ignorer les erreurs et faire ce que vous voulez lorsque l'erreur se produit comme ceci:

try {
    if(undefined_vars /* && more*/){

    }
} catch(err) {
    // err.message will return the undefined error and you can put your create variable here and than start your code here again

}

Vous pouvez maintenant avoir votre code même si vous n'avez pas mis var,const,let avant votre code sans obtenir d'erreur.

1
epicweb 19 mai 2020 à 13:57

Vous pouvez créer un tableau contenant toutes ces variables, puis créer une fonction qui prend ce tableau comme argument. Ensuite, à l'intérieur de la fonction, parcourez le tableau en utilisant l'instruction conditionnelle (if) pour déterminer si l'une d'entre elles est fausse. Par exemple arr.reduce ((bln, myVar) => typeof myVar === 'undefined' && bln, true). Appelez la fonction et elle retournera vrai ou faux selon si aucun n'était défini.

var _0;
var _1;
var _2 = 'not undefined';
var _3 = 'again not undefined';

const test0 = [_0, _1]; //should return true (contains undefined)
const test1 = [_2, _3]; //should return false (doesn't contain undefined)
const test2 = [_0, _1, _2, _3]; //should return true (contains undefined)

function containsUndefined(arr){
  //loop array to determine if any are undefined
  return arr.reduce((bln, myVar) => typeof myVar == 'undefined' && bln, true);
}

console.log('test0', containsUndefined(test0));
console.log('test1', containsUndefined(test1));
console.log('test2', containsUndefined(test2));
0
George 19 mai 2020 à 13:50

À n'importe quel moment où les variables sont définies, placez-les sur un seul objet à la place, il ne vous reste plus qu'à vérifier si l'objet existe encore:

if (!window.myObj) {
  // Define properties:
  window.myObj = {
    prop1: 'val1',
    prop2: 'val2',
    // ...
  };
}
// proceed to use `window.myObj.prop1`, etc
0
CertainPerformance 19 mai 2020 à 13:41