Puis-je écrire le if else
raccourci sans le else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
J'ai remarqué que mettre null
pour les autres travaux (mais je n'ai aucune idée pourquoi ou si c'est une bonne idée).
Edit: Certains d'entre vous semblent perplexes pourquoi je prendrais la peine d'essayer cela. Soyez assuré que c'est purement par curiosité. J'aime jouer avec JavaScript.
var | var
syntaxe. Attention car il est potentiellement difficile de "voir", en particulier les ternaires (OMI) étant problématiques. Utiliser avec parcimonie.:)
foo = bar | cat;
, où si le premier est faux? null ?, il "tombe" à la seconde. Je l'ai seulement vu, cependant, et ne l'utilise pas.a || b
oua && b
, sinon,b
sera toujours évalué.Réponses:
C'est aussi une option:
dosomething()
ne sera appelé que s'ilx==2
est évalué comme vrai. C'est ce qu'on appelle un court-circuit .Il n'est pas couramment utilisé dans des cas comme celui-ci et vous ne devriez vraiment pas écrire de code comme celui-ci. J'encourage cette approche plus simple:
Vous devez écrire du code lisible à tout moment; si vous êtes préoccupé par la taille du fichier, créez-en simplement une version réduite à l'aide de l'un des nombreux compresseurs JS. (par exemple, le compilateur de fermeture de Google )
la source
if (1 - 1 === 0) $('.woot').text('Woot!');
j'utilise ce formulaire tout le temps avec PHP, et maintenant que j'adopte Coffeescript, je l'utilise aussi dans mon Javascript.if x==2 && doSomething() || doSomethingElse()
doSomething() if x === 2
. Je ne manque pas Ruby, mais ça me manque.Ce que vous avez est une utilisation assez inhabituelle de l' opérateur ternaire . Habituellement, il est utilisé comme une expression, pas une déclaration, à l'intérieur d'une autre opération, par exemple:
Donc, pour la lisibilité (parce que ce que vous faites est inhabituel), et parce que cela évite le "sinon" que vous ne voulez pas, je suggère:
la source
Une autre option:
la source
Si vous ne faites pas le reste, pourquoi ne pas faire:
la source
L'utilisation
null
est très bien pour l'une des branches d'une expression ternaire. Et une expression ternaire est très bien comme une déclaration en Javascript.Cependant, si vous envisagez d'invoquer une procédure, il est plus clair d'écrire ceci en utilisant if..else:
ou, dans votre cas,
la source
Petit ajout à ce très vieux fil ..
Si your'e évaluation d' une expression dans une
for
/while
boucle avec un opérateur ternaire, et que vous souhaitezcontinue
oubreak
en raison - vous allez avoir un problème parce que les deuxcontinue
etbreak
ne sont pas des expressions , ils sont des déclarations sans aucune valeur.Cela produira
Uncaught SyntaxError: Unexpected token continue
Si vous voulez vraiment une ligne unique qui retourne une déclaration, vous pouvez l'utiliser à la place:
la source
Techniquement, mettre null ou 0, ou juste une valeur aléatoire , cela fonctionne (puisque vous n'utilisez pas la valeur de retour). Cependant, pourquoi utilisez-vous cette construction au lieu de la
if
construction? Il est moins évident de savoir ce que vous essayez de faire lorsque vous écrivez du code de cette façon, car vous risquez de confondre les gens avec le no-op (null dans votre cas).la source
Probablement le plus court (basé sur l' opérateur OR et sa priorité )
Afficher l'extrait de code
la source