283 votes

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

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

var x=1;

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

J'ai remarqué que mettre null pour le reste fonctionne (mais je ne sais pas pourquoi ni si c'est une bonne idée).

Edit : Certains d'entre vous semblent se demander pourquoi j'ai pris la peine d'essayer ça. Soyez assurés que c'est par pure curiosité. J'aime m'amuser avec JavaScript.

739voto

NickC Points 13729

Ce que vous avez est une utilisation assez inhabituelle de la opérateur ternaire . Habituellement, il est utilisé comme une expression, et non comme une déclaration, à l'intérieur d'une autre opération, par exemple :

var y = (x == 2 ? "yes" : "no");

Ainsi, pour des raisons de lisibilité (parce que ce que vous faites est inhabituel), et parce que cela évite le "autre" que vous ne voulez pas, je suggérerais :

if (x==2) doSomething();

257voto

ajax333221 Points 2997

C'est également une option :

x==2 && dosomething();

dosomething() ne sera appelé que si x==2 est évalué à true. C'est ce qu'on appelle Court-circuitage .

Il n'est pas couramment utilisé dans des cas comme celui-ci et vous ne devriez vraiment pas écrire du code comme celui-ci. J'encourage cette approche plus simple :

if(x==2) dosomething();

Vous devez toujours écrire un code lisible ; si la taille du fichier vous préoccupe, créez simplement une version réduite à l'aide de l'un des nombreux compresseurs de JS. (par exemple, le programme de Google Compilateur de fermetures )

18voto

Prescott Points 3947

Si vous ne faites pas le reste, pourquoi ne pas le faire :

if (x==2) doSomething();

11voto

Ted Hopp Points 122617

Utilisation de null convient pour l'une des branches d'une expression ternaire. Et une expression ternaire est parfaite en tant qu'instruction en Javascript.

Toutefois, pour des raisons de style, si vous avez l'intention d'invoquer une procédure, il est plus clair de l'écrire en utilisant if..else :

if (x==2) doSomething;
else doSomethingElse

ou, dans votre cas,

if (x==2) doSomething;

4voto

KennyTM Points 232647

Tu ne peux pas juste écrire, hein

if (x==2) { dosomething; }

?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X