66 votes

Javascript - Opérateur ternaire avec plusieurs instructions

Est-ce JavaScript valide ? J'ai vu un exemple où quelqu'un a utilisé des virgules dans les conditions d'opérateur ternaire, et cela a été marqué comme une erreur dans mon éditeur, et l'exemple ne s'est pas exécuté dans Chrome. Cependant, il fonctionnait dans Firefox. Une fois que j'ai converti toutes les instructions ternaires en instructions if/else, l'application a fonctionné sur Chrome.

 a!==b ? (a=1, b=2) : (a=2, b=1)

Éditer:

Ceci est la déclaration réelle dans le code:

 a!==0?b<0?(h=b/a,e=h-1,f=-2*b+2*a*e,i=-2*b+2*a*h,d=2*h*a-2*b-2*a):(h=b/a,e=h+1,f=2*b-2*a*e,i=2*b-2*a*h,d=-2*h*a+2*b):d=h=e=f=i=0

36voto

Sarfraz Points 168484

Oui:

 a=1;
b=2;

a!==b ? (a=1, b=2) : (a=2, b=1)

console.log(a);     // 1
console.log(b);     // 2

et:

 a=1;
b=2;

a===b ? (a=1, b=2) : (a=2, b=1)

console.log(a);     // 2
console.log(b);     // 1

Comme vous pouvez l'analyser, changer l'opérateur d'égalité réagit correctement à notre test si vous regardez les résultats.

7voto

TK Omble Points 159

Ou tu peux faire ça :

 b = a!==b ? (a=1,2) : (a=2,1);

Lisez ici à propos de l'opérateur virgule.

L'opérateur virgule évalue chacun de ses opérandes (de gauche à droite) et renvoie la valeur du dernier opérande.

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