L'omission de la deuxième expression lors de l'utilisation de l'if-else abréviation

Puis-je écrire le if else abréviation sans else?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

J'ai remarqué en mettant null pour le reste fonctionne (mais je n'ai aucune idée de la raison ou si c'est une bonne idée).

Edit: Certains d'entre vous semblent perplexes pourquoi je me donnerais la peine de les essayer. Rassurez-vous, il est purement de la curiosité. J'aime déconner avec le JavaScript.

  • Je pense qu'il y a un var | var de la syntaxe. Attention, c'est potentiellement difficile de "voir", en particulier (OMI) ternaires problématiques. À utiliser avec parcimonie.
  • N'est-ce pas le point de l'ensemble de ternaires qu'ils sont plus faciles à "voir" de l'aide si les déclarations? Aussi quelle est la syntaxe que vous êtes en train de parler, il semble intéressant .
  • Non, je ne pense pas qu'ils soient plus facile à tous dans tous les cas. Le "point" dans mon esprit, c'est soit de le mettre sur une seule ligne ("mes codes plus courte que la vôtre"), ou pour certains, littéral cas avec simpliste résultats. L'empilement ternaires est particulièrement pernicieuse et devrait être évitée à tout prix. :)
  • J'ai vu quelque chose comme foo = bar | cat;, où, si la première est fausse? null?, il "tombe à l'eau" pour le second. Je n'ai vu que lui, bien que, et ne l'utilisez pas.
  • Il n'est pas un problème de faire quelque chose comme ceci: var foo = bar || soap; où le bar est un falsy valeur (rappelez-vous, js a six différents falsy valeurs). Cela va faire foo la valeur de savon. Je l'utilise souvent lors de la création des "espaces de noms", où on ne sait jamais si une valeur est définie ou non, à l'instar de ce. var ns = ns || {}; ns.quelque chose = {} // un autre espace de noms.
  • C'est a || b ou a && b, sinon b seront toujours évaluées.
  • Le Code est pour le plaisir du lecteur, de sorte que si une approche a un impact significatif sur les codes d'exécution sur une autre approche pour la même chose, la concision ne devrait pas prendre une approche "best". Il m'arrive de penser à plein if états plus lisible/analyser en un scan de la page. Mais je suis sûr que d'autres sont en désaccord.
  • Eh bien je suis d'accord avec vous, mais ces cas ne se produisent, et ternaires ne aider à la lisibilité dans ces cas.
  • Ah ok, merci. Est-ce un XOR?
  • Les bons points, j'aime cette forme dans la pratique plus ternaires. Je suis juste des préjugés contre les ternaires, je suppose. Trop facile de laisser "intelligent" s'échapper et avec un peu d'eau et des collations pendant la nuit vous avez un gremlin dans votre code.
  • Je n'utilise jamais ternaire opérateurs de définir une valeur, car il est moins détaillé que l'ifs. mais pour tout le reste (ou si le ternaire expression devient à de longs et/ou complexes) j'utilise le si construire qu'elle est plus facile à lire.
  • vrai, vous ne devriez jamais utiliser le code que vous êtes à 100%, vous savez ce qui est en train de faire.
  • a != b ou a ^ b. A et b devront être évalués, xor n'a pas de court-circuit.
  • XOR obtient ma chèvre. Je pense que le XOR de l'assistant d'été de l'alimentation, trop. Encore un mystère de ce qu'il fait, dans la pratique, logiquement.
  • Aussi, est il y a un nom pour la construction de var a = b || c?
  • Je ne pense pas qu'il y a un nom spécifique, mais voir stackoverflow.com/questions/1378619/javascript-operator et les questions connexes.
  • Bien qu'il n'est pas nécessairement le "nom" de l'approche de cette pratique, je pense que le "court-circuit" est probablement le meilleur ajustement.
  • condition && (codetorun) ils façon dont cela fonctionne est que les && retourne true si les deux sont vrais. Donc, si la condition est vraie, il va à la deuxième qui est entre parenthèses, donc il calcule que, d'abord, de l'exécuter. puis retourner true/false. Mais nous ne sont concernés par l'acte d'exécution. Alors quand c'est la condition est fausse, elle retourne faux, car il n'est pas nécessaire d'évaluer la 2e déclaration comme résultat sera faux.
  • statement || statement de l'autre côté s'exécute d'abord un, puis la deuxième. si la première est fausse; donc en face de &&. || retourne si un seul est vrai, donc si la première affirmation est fausse, la seconde sera évalué si, dans les parenthèses, puis courir, et s'en retourna.
  • La bonne réponse à cette question est l'une par NickC stackoverflow.com/a/11069295/1044366 Malheureusement, il n'a pas été marquée comme la réponse correcte.

InformationsquelleAutor Nikki | 2012-06-17