Puis-je écrire le raccourci if else
sans le else
?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
J'ai remarqué mettre null
pour le reste (mais je ne sais pas pourquoi ni si c'est une bonne idée).
Edit: Certains d'entre vous semblent perplexes, pourquoi je m'embêterais à essayer cela. Soyez assuré que c'est purement par curiosité. J'aime jouer avec JavaScript.
C'est aussi une option:
x==2 && dosomething();
dosomething()
ne sera appelé que si x==2
est évalué à true. Cela s'appelle court-circuit .
Ce n'est pas couramment utilisé dans des cas comme celui-ci et vous ne devriez vraiment pas écrire un code comme celui-ci. J'encourage cette approche plus simple:
if(x==2) dosomething();
Vous devez écrire du code lisible à tout moment. si la taille du fichier vous inquiète, créez-en une version plus précise à l’aide d’un des nombreux compresseurs JS. (par exemple, Google Closure Compiler )
Ce que vous avez est une utilisation assez inhabituelle de opérateur ternaire . Habituellement, il est utilisé comme une expression, et non comme une déclaration, dans une autre opération, par exemple:
var y = (x == 2 ? "yes" : "no");
Donc, pour des raisons de lisibilité (parce que ce que vous faites est inhabituel), et parce que cela évite le "sinon" que vous ne voulez pas, je suggérerais:
if (x==2) doSomething();
Une autre option:
x === 2 ? doSomething() : void 0;
Si vous ne faites pas le reste, pourquoi ne pas faire:
if (x==2) doSomething();
Utiliser null
convient pour l’une des branches d’une expression ternaire. Et une expression ternaire convient comme affirmation en Javascript.
Pour des raisons de style, cependant, si vous avez à l’esprit d’appeler une procédure, il est plus clair d’écrire ceci en utilisant if..else:
if (x==2) doSomething;
else doSomethingElse
ou, dans votre cas,
if (x==2) doSomething;
Un tout petit ajout à ce très, très vieux fil ..
Disons que vous êtes dans une boucle for
et que vous devez évaluer une variable pour une valeur truthy/falsy
avec un opérateur ternaire, alors que dans le cas où il s'agit de falsy
, vous voulez continue
- vous allez avoir un problème parce que vous ne retournez pas un expression, vous retournez à la place un déclaration sans aucune valeur.
Cela produira Uncaught SyntaxError: Unexpected token continue
for (var i = 0; i < myArray.length; i++) {
myArray[i].value ? alert('yay') : continue;
}
Par conséquent, si vous souhaitez renvoyer une instruction tout en utilisant une seule ligne pour votre code, même si cela peut sembler un peu étrange à première vue et ne pas suivre une utilisation de langue stricte, vous pouvez le faire à la place:
for (var i = 0; i < myArray.length; i++) {
if (myArray[i].value) alert('yay') ; else continue;
}
Techniquement, mettre null ou 0, ou juste quelques valeurs aléatoires valeur fonctionne (puisque vous n'utilisez pas la valeur de retour). Cependant, pourquoi utilisez-vous cette construction au lieu de la construction if
? Ce que vous essayez de faire lorsque vous écrivez du code de cette façon est moins évident, car vous risqueriez de confondre les personnes avec le no-op (null dans votre cas).
Probablement le plus court
x-2||dosomething()
let x=1, y=2;
let dosomething = s=>console.log(s);
x-2||dosomething('x do something');
y-2||dosomething('y do something');