y a-t-il quelque chose comme isset de php dans javascript/jQuery? [dupliquer]
cette question a déjà une réponse ici:
- équivalent JavaScript isset () 17 réponses
y a-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 ça.
grâce.
11 réponses
essayez cette expression:
typeof(variable) != "undefined" && variable !== null
cela sera vrai si la variable est définie et non nulle, ce qui est l'équivalent du fonctionnement de l'isset de PHP.
Vous pouvez l'utiliser comme ceci:
if(typeof(variable) != "undefined" && variable !== null) {
bla();
}
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;
}
typeof servira le but je pense que
if(typeof foo != "undefined"){}
Si vous voulez vérifier si une propriété existe: hasOwnProperty est le chemin à parcourir
et puisque la plupart des objets sont des propriétés d'un autre objet (conduisant éventuellement à l'objet window
) cela peut bien fonctionner pour vérifier si des valeurs ont été déclarées.
pas naturellement, non... Cependant, un googling de la chose a donné ceci: http://phpjs.org/functions/isset:454
http://phpjs.org/functions/isset:454
phpjs project est une source fiable. Beaucoup de JS fonctions php équivalentes disponibles là-bas. Je l'utilise depuis longtemps et n'a trouvé aucun problèmes jusqu'à présent.
le problème est que passer une variable non définie à une fonction provoque une erreur.
cela signifie que vous devez exécuter typeof avant de le passer comme argument.
le moyen le plus propre que j'ai trouvé pour faire ceci est comme ceci:
function isset(v){
if(v === 'undefined'){
return false;
}
return true;
}
Utilisation:
if(isset(typeof(varname))){
alert('is set');
} else {
alert('not set');
}
maintenant le code est beaucoup plus compact et lisible.
Cela va donner une erreur si vous essayez d'appeler une variable à partir d'une variable non instanciée comme:
isset(typeof(undefVar.subkey))
donc avant d'essayer d'exécuter cette fonction, vous devez vous assurer que l'objet est défini:
undefVar = isset(typeof(undefVar))?undefVar:{};
ici:)
function isSet(iVal){
return (iVal!=="" && iVal!=null && iVal!==undefined && typeof(iVal) != "undefined") ? 1 : 0;
} // Returns 1 if set, 0 false
en plus de @emil-vikström 'S réponse, vérifier pour variable!=null
serait vrai pour variable!==null
ainsi que pour variable!==undefined
(ou typeof(variable)!="undefined"
).
certaines parties de chacune de ces réponses fonctionnent. Je les ai compilés dans une fonction "isset" comme la question le demandait et fonctionne comme en PHP.
// isset helper function var isset = function(variable){ return typeof(variable) !== "undefined" && variable !== null && variable !== ''; }
voici un exemple d'utilisation:
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 détailler ce que chaque partie fait:
-
typeof(variable) !== "undefined"
vérifie si la variable est défini à tous -
variable !== null
vérifie si la variable est nulle (certaines personnes placent explicitement null et ne pensent pas que si elle est placée à null que c'est correct, dans ce cas, supprimer cette partie) -
variable !== ''
vérifie si la variable est définie à une chaîne vide, vous pouvez le supprimer si une chaîne vide en compte que pour votre cas d'utilisation
Espérons que cela aide quelqu'un :)
Vous pouvez tout simplement:
if(variable||variable===0){
//Yes it is set
//do something
}
else {
//No it is not set
//Or its null
//do something else
}