Quelqu'un peut-il m'expliquer pourquoi cela renvoie une chaîne vide ("") au lieu d'un booléen (faux)? ... Pendant que cela fonctionne comme prévu, revenant vrai: var y = "abc";
alert(y && y.length > 0);
3 Réponses :
Lorsqu'un opérateur conditionnel en JavaScript est satisfait, il renvoie la dernière valeur évaluée.
var y = "abc"; alert(y && y.length > 0);
Si cette information aide à une personne à lire ceci, les valeurs JS FAIGEY sont = 0, "", FAUX, NULL, UNDÉFINÉ, NAN CODE>
Il renvoie et vider la chaîne car x est déjà défini, juste vide.
Ceci provoque la première partie de votre expression Si vous devez rechercher une chaîne null / vide, essayez quelque chose comme ça. p> alerte (x) code> pour afficher une chaîne vide. P>
Les opérations conditionnelles utilisant le Le résultat des opérations conditionnelles sera le dernier évalué avant d'arrêter (pas nécessairement un pour forcer le retour de la réel em> && code> (et opérateur) s'arrêteront quand:
false code> li>
vrai code> li>
ul>
booléen code>) p>
booléen code>, vous pouvez tout emballage autour de
!! (...) code>, exemple: p>
Notez que vous pouvez forcer le retour d'un
booléen code> en utilisant
!! (x) code>
Vous devriez être capable de raccourcir quelque chose de plus comme
alerte (typeof x! = non défini && x.length> 0) code> parce que ceux qui rendent les deux bools, altho, si jamais X est indéfini, il peut lancer une erreur ( le plus probablement) parce que la 1ère argument pourrait une erreur, vaudrait mieux les diviser en mini func ou en ligne