web-dev-qa-db-fra.com

y at-il quelque chose comme isset de php dans javascript/jQuery?

Existe-t-il quelque chose dans javascript/jQuery pour vérifier si la variable est définie/disponible ou non? En php, nous utilisons isset($variable) pour vérifier quelque chose comme ceci.

merci.

70
gautamlakum

Essayez cette expression:

typeof(variable) != "undefined" && variable !== null

Cela sera vrai si la variable est définie et non null, ce qui équivaut à la façon dont fonctionne isset de PHP.

Vous pouvez l'utiliser comme ceci:

if(typeof(variable) != "undefined" && variable !== null) {
    bla();
}
130
Emil Vikström

JavaScript isset () sur PHP JS

function isset () {
    // discuss at: http://phpjs.org/functions/isset
    // +   original by: Kevin van     Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FremyCompany
    // +   improved by: Onno Marsman
    // +   improved by: Rafał Kukawski
    // *     example 1: isset( undefined, true);
    // *     returns 1: false
    // *     example 2: isset( 'Kevin van Zonneveld' );
    // *     returns 2: true
    var a = arguments,
        l = a.length,
        i = 0,
        undef;

    if (l === 0) {
        throw new Error('Empty isset');
    }

    while (i !== l) {
        if (a[i] === undef || a[i] === null) {
            return false;
        }
        i++;
    }
    return true;
}
9
Oleg

typeof servira le but je pense

if(typeof foo != "undefined"){}
3
DanneManne

Si vous voulez vérifier si une propriété existe: hasOwnProperty est le chemin à parcourir

Et comme la plupart des objets sont les propriétés d’un autre objet (menant éventuellement à l’objet window), cela peut fonctionner pour vérifier si des valeurs ont été déclarées.

3
zzzzBov

Pas naturellement, non ... Cependant, un article sur Google donna ceci: http://phpjs.org/functions/isset:454

2
Ioannis Karadimas

http://phpjs.org/functions/isset:454

le projet phpjs est une source de confiance. Beaucoup de fonctions jp équivalentes js sont disponibles ici. J'utilise depuis longtemps et n'ai trouvé aucun problème jusqu'à présent.

2
Sandeepan Nath

Le problème est que le passage d'une variable non définie à une fonction provoque une erreur.

Cela signifie que vous devez exécuter typeof avant de le passer en argument.

Le moyen le plus propre que j'ai trouvé est le suivant:

function isset(v){
    if(v === 'undefined'){
        return false;
    }
    return true;
}

Usage:

if(isset(typeof(varname))){
  alert('is set');
} else {
  alert('not set');
}

Maintenant, le code est beaucoup plus compact et lisible.

Cela donnera quand même une erreur si vous essayez d'appeler une variable à partir d'une variable non instanciée telle que:

isset(typeof(undefVar.subkey))

par conséquent, avant d'essayer de l'exécuter, vous devez vous assurer que l'objet est défini:

undefVar = isset(typeof(undefVar))?undefVar:{};
1
Dieter Gribnitz

en plus de la réponse de @ emil-vikström , la vérification de variable!=null serait vraie pour variable!==null ainsi que pour variable!==undefined (ou typeof(variable)!="undefined").

0
user2619604

Certaines parties de chacune de ces réponses fonctionnent. Je les ai tous compilés dans une fonction "isset" comme le demandait la question et fonctionne comme en PHP.

// isset helper function 
var isset = function(variable){
    return typeof(variable) !== "undefined" && variable !== null && variable !== '';
}

Voici un exemple d'utilisation de la façon de l'utiliser:

var example = 'this is an example';
if(isset(example)){
    console.log('the example variable has a value set');
}

Cela dépend de la situation pour laquelle vous en avez besoin, mais laissez-moi vous expliquer ce que chaque partie fait:

  1. typeof(variable) !== "undefined" vérifie si la variable est définie
  2. variable !== null vérifie si la variable est null (certaines personnes ont explicitement défini la valeur null et ne pensent pas que si elle est définie sur null, c'est correct, dans ce cas, supprimez cette partie)
  3. variable !== '' vérifie si la variable est définie sur une chaîne vide, vous pouvez la supprimer si une chaîne vide compte pour votre cas d'utilisation

J'espère que ça aide quelqu'un :)

0
stuyam

Ici :)

function isSet(iVal){
 return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false
0
Mr Bill