En utilisant JavaScript, comment ne pas détecter 0, mais sinon détecter les chaînes vides ou vides?Cette instruction if ne doit pas détecter 0; uniquement les chaînes vides ou vides
Répondre
À partir de votre titre de la question:
if(val === null || val == "")
Je ne peux voir que vous avez oublié un =
lors d'une tentative de stricte-égalité-comparer val
avec la chaîne vide:
if(val === null || val === "")
Test avec Firebug:
>>> 0 === null || 0 == ""
true
>>> 0 === null || 0 === ""
false
EDIT: voir le commentaire de CMS à la place pour l'explication.
Oh, donc une chaîne vide est la même chose que 0 avec ==? Impair. Merci! – Hamster
Oui; en fait, c'est l'une des principales raisons de préférer '===' à '=='. En raison de la conversion automatique, 'false == 0 ==" "', mais 'false! == 0! ==" "'. – Amber
Bon, bien +1. Un meilleur mot pour * traduit * serait-il * contraint *? (juste en pensant à haute voix) :) – alex
Si j'ai bien compris, vous vouliez détecter une chaîne non vide?
function isNonEmptyString(val) {
return (typeof val == 'string' && val!='');
}
/*
isNonEmptyString(0); // returns false
isNonEmptyString(""); // returns false
isNonEmptyString(null); // returns false
isNonEmptyString("something"); // returns true
*/
Si vous voulez détecter toutes les valeurs Falsey sauf zéro:
if (!foo && foo !== 0)
Donc, ce détectera null
, des chaînes vides, false
, undefined
, etc.
Vous êtes presque là, pourrait aussi bien préciser ce que vous entendez par «etc». – SoEzPz
utilisation 'val ===" "' s'assurer que val est une chaîne dans ce second test. – Warty
Je ne sais pas pour vous, mais il est plus facile pour moi de suivre cette phrase de façon logique: "Comment puis-je détecter des chaînes nulles ou vides, mais pas 0". La seule raison pour laquelle je mentionne cela est parce que structurer le code dans l'ordre que vous diriez qu'il peut parfois le rendre plus facile à mettre en œuvre. –