308 votes

Déclaration "if" JavaScript en une ligne - meilleure syntaxe, cette alternative ?

Il a été clairement établi, mais il s'agit néanmoins d'une opinion, que le fait de renoncer aux accolades sur une seule ligne if n'est pas idéal pour la maintenance et la lisibilité.

Mais qu'en est-il de ça ?

if (lemons) { document.write("foo gave me a bar"); }

Elle est encore plus comprimée, et si elle est étendue, les accolades ne seront pas oubliées. Y a-t-il des problèmes flagrants, et si non, quelles sont les considérations ? J'ai l'impression que c'est toujours très lisible, au moins autant qu'un opérateur ternaire de toute façon. Il me semble que les opérateurs ternaires ne sont pas autant suggérés pour des raisons de lisibilité, bien que cette conclusion ne fasse pas l'unanimité.

Le jumeau maléfique en moi veut suggérer cela, bien que la syntaxe ne soit évidemment pas faite pour cela, et que ce soit probablement une mauvaise idée.

(syntax) ? document.write("My evil twin emerges"): "";

448voto

Peter Olson Points 30452

J'ai vu le comportement de court-circuitage des && Les personnes qui n'y sont pas habituées peuvent trouver la lecture difficile, voire la qualifier d'anti-modèle :

lemons && document.write("foo gave me a bar");  

Personnellement, j'utiliserai souvent la ligne simple if sans parenthèses, comme ceci :

if (lemons) document.write("foo gave me a bar");

Si je dois ajouter d'autres déclarations, je les placerai sur la ligne suivante et j'ajouterai des parenthèses. Comme mon IDE fait de l'indentation automatique, les objections de maintenabilité à cette pratique sont sans objet.

198voto

asael2 Points 23

Je l'utilise comme ça :

(lemons) ? alert("please give me a lemonade") : alert("then give me a beer");

53voto

Macro Points 21

Vous pouvez utiliser ce format, qui est couramment utilisé en PHP :

(lemon) ? document.write("foo gave me a bar") : document.write("if condition is FALSE");

50voto

Marc Points 28

Comme cela a déjà été dit, vous pouvez utiliser :

&& style

lemons && document.write("foo gave me a bar");  

ou

style sans support

if (lemons) document.write("foo gave me a bar");

retour de court-circuit

Si, toutefois, vous souhaitez utiliser la ligne unique if pour court-circuiter une fonction, il faut utiliser l'instruction sans support comme suit :

if (lemons) return "foo gave me a bar";

comme

lemons && return "foo gave me a bar"; // does not work!

vous donnera un SyntaxError: Unexpected keyword 'return'

28voto

Peut l'utiliser,

lemons ? alert("please give me a lemonade") : alert("then give me a beer");

explication : si lemons est vrai, alors alert("please give me a lemonade") si non, alert("then give me a beer")

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