7
votes

JavaScript String String String sur ce qui devrait être un test booléen sténographique

Quelqu'un peut-il m'expliquer pourquoi cela renvoie une chaîne vide ("") au lieu d'un booléen (faux)? XXX PRE>

... Pendant que cela fonctionne comme prévu, revenant vrai:

var y = "abc";
alert(y && y.length > 0);


2 commentaires

Notez que vous pouvez forcer le retour d'un booléen en utilisant !! (x)


Vous devriez être capable de raccourcir quelque chose de plus comme alerte (typeof x! = non défini && x.length> 0) 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


3 Réponses :


7
votes

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);


1 commentaires

Si cette information aide à une personne à lire ceci, les valeurs JS FAIGEY sont = 0, "", FAUX, NULL, UNDÉFINÉ, NAN



0
votes

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 alerte (x) pour afficher une chaîne vide.

Si vous devez rechercher une chaîne null / vide, essayez quelque chose comme ça. xxx


0 commentaires

0
votes

Les opérations conditionnelles utilisant le && (et opérateur) s'arrêteront quand:

  • L'une des conditions évaluées à false
  • Il a fait avec succès à la fin en évaluant tout à vrai

    Le résultat des opérations conditionnelles sera le dernier évalué avant d'arrêter (pas nécessairement un booléen )

    pour forcer le retour de la réel booléen , vous pouvez tout emballage autour de !! (...) , exemple: xxx


0 commentaires