Comment déterminer si la variable est undefined
ou null
? Mon code est le suivant:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
//DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
Mais si je fais cela, l'interpréteur JavaScript arrête l'exécution.
Vous pouvez utiliser les qualités de opérateur d'égalité abstraite pour ce faire:
if (variable == null){
// your code here.
}
Étant donné que null == undefined
est vrai, le code ci-dessus intercepte les variables null
et undefined
.
Le moyen standard pour attraper null
et undefined
simultanément est la suivante:
if (variable == null) {
// do something
}
--qui est 100% équivalent au plus explicite mais moins concis:
if (variable === undefined || variable === null) {
// do something
}
En écrivant JS professionnel, il est pris pour acquis que l’égalité de type et le comportement de ==
vs ===
est compris. Par conséquent, nous utilisons ==
et comparons uniquement à null
.
Les commentaires suggérant l'utilisation de typeof
sont simplement incorrects. Oui, ma solution ci-dessus provoquera une erreur ReferenceError si la variable n'existe pas. C’est une bonne chose. Cette erreur de référence est souhaitable: elle vous aidera à trouver vos erreurs et à les corriger avant l’expédition de votre code, comme le ferait une erreur de compilation dans d’autres langues.
Vous ne devriez avoir aucune référence à des variables non déclarées dans votre code.
En combinant les réponses ci-dessus, il semble que la réponse la plus complète serait:
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
Cela devrait fonctionner pour toute variable non déclarée ou déclarée et explicitement définie sur null ou non défini. L'expression booléenne doit être évaluée à false pour toute variable déclarée ayant une valeur réelle non nulle.
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
if (typeof EmpName != 'undefined' && EmpName) {
sera évalué à true si la valeur n'est pas:
null
non défini
NaN
chaîne vide ("")
false
la fonction jQuery attr()
renvoie une chaîne vide ou la valeur réelle (et jamais null
ni undefined
). La seule fois où il retourne undefined
, c'est lorsque votre sélecteur n'a renvoyé aucun élément.
Donc, vous voudrez peut-être tester sur une chaîne vide. Alternativement, puisque les chaînes vides, null et undefined sont false-y, vous pouvez simplement faire ceci:
if (!EmpName) { //do something }
Je suis venu pour écrire ma propre fonction pour cela. javascript est bizarre
Utilisable sur littéralement n'importe quoi. (Notez que ceci vérifie également si la variable contient des valeurs utilisables . Mais puisque cette information est généralement nécessaire, je pense que cela vaut la peine d'être publié). S'il vous plaît envisager de laisser une note.
function empty(v) {
let type = typeof v;
if (type === 'undefined') {
return true;
}
if (type === 'boolean') {
return !v;
}
if (v === null) {
return true;
}
if (v === undefined) {
return true;
}
if (v instanceof Array) {
if (v.length < 1) {
return true;
}
} else if (type === 'string') {
if (v.length < 1) {
return true;
}
if (v === '0') {
return true;
}
} else if (type === 'object') {
if (Object.keys(v).length < 1) {
return true;
}
} else if (type === 'number') {
if (v === 0) {
return true;
}
}
return false;
}
TypeScript-compatible.
Modifier. cette fonction devrait faire exactement la même chose que PHP fonction empty()
(voir RETURN VALUES
)
Considère que undefined
, null
, false
, 0
, 0.0
, "0"
{}
, []
comme vide.
"0.0"
, NaN
, " "
, true
sont considérés comme non vides.
Si la variable que vous voulez vérifier est globale, faites
if (window.yourVarName) {
// Your code here
}
Cette méthode de vérification ne génère pas d'erreur, même si la variable yourVarName
n'existe pas.
if (window.history) {
history.back();
}
window
est un objet qui contient toutes les variables globales en tant que propriétés. En JavaScript, il est légal d'essayer d'accéder à une propriété d'objet non existante. Si history
n'existe pas, alors window.history
renvoie undefined
. undefined
est falsey, le code d'un bloc if(undefined){}
ne fonctionnera donc pas.
Puisque vous utilisez jQuery, vous pouvez déterminer si une variable est indéfinie ou si sa valeur est null en utilisant une seule fonction.
var s; // undefined
jQuery.isEmptyObject(s); // will return true;
s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;
// usage
if(jQuery.isEmptyObject(s)){
alert('Either variable: s is undefined or its value is null');
}else{
alert('variable: s has value ' + s);
}
s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;
Je viens d'avoir ce problème, c'est-à-dire vérifier si un objet est null.
J'utilise simplement ceci:
if (object) {
// Your code
}
Par exemple:
if (document.getElementById("enterJob")) {
document.getElementById("enterJob").className += ' current';
}
l'élément de contrôle jQuery n'est pas null
var dvElement = $('#dvElement');
if (dvElement.length > 0) {
//do something
}
else{
//else do something else
}
Avec la solution ci-dessous:
const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);
console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...
Je suis en mesure de vérifier les éléments suivants:
je lance ce test sur la console chrome, en utilisant (void 0), vous pouvez vérifier non défini
var c;
undefined
if(c === void 0)alert();
// output = undefined
var c = 1;
// output = undefined
if(c === void 0)alert();
// output = undefined
// check c value c
// output = 1
if(c === void 0)alert();
// output = undefined
c = undefined;
// output = undefined
if(c === void 0)alert();
// output = undefined
(null == undefined) // true
(null === undefined) // false
Parce que === vérifie à la fois le type et la valeur. Le type des deux est différent mais la valeur est la même.
Le plus court et le plus facile:
if(!EmpName ){
// DO SOMETHING
}
cela évaluera true si EmpName est:
Le moyen le plus simple de vérifier est:
if(!variable) {
// If the variable is null or undefined then execution of code will enter here.
}
var i;
if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}
Vous pouvez simplement utiliser ce qui suit (je sais qu'il existe des méthodes plus courtes pour le faire, mais cela peut faciliter l'observation visuelle, du moins pour ceux qui consultent le code).
if (x === null || x === undefined) {
// add your response code here etc.
}
Meilleur moyen:
if(typeof variable==='undefined' || variable===null) {
/* do your stuff */
}
Vous pouvez vérifier si la valeur est indéfinie ou nulle en utilisant simplement typeof:
if(typeof value == 'undefined'){