web-dev-qa-db-fra.com

Pourquoi javascript accepte-t-il les virgules dans les instructions if?

Je suis tombé sur une syntaxe javascript qui semblait produire une erreur d'analyse, mais ne le fait pas:

if (true, true) {console.log('splendid')} else {console.log('horrid')} // splendid
if (true, false) {console.log('splendid')} else {console.log('horrid')} // horrid

Il semble que seule la dernière expression affecte la logique, bien que toutes les expressions soient exécutées:

if  (console.log('super'), true) {console.log('splendid')} // super splendid

Quelqu'un sait pourquoi c'est une syntaxe javascript valide? Y a-t-il une utilité pratique pour cela?

64
Matt

L'opérateur virgule enchaîne plusieurs expressions et le résultat de l'opération est la valeur du dernier opérande. La seule utilisation réelle est lorsque vous avez besoin de plusieurs effets secondaires, tels que des appels d'affectation ou de fonction.

57
33
Adam Ayres

les virgules en javascript sont en fait assez obscures. L'usage le plus cool que j'ai vu est celui-ci

while(doSomething(), checkIfSomethingHappened());

le plus courant serait la façon dont var est utilisé dans les js modernes

var foo = 1,
    bar = 2;
15
Matt Briggs

C'est également le même que dans la plupart des autres langages de programmation où vous pouvez avoir plusieurs itérateurs dans une boucle.

int x,y;
for(x = 0, y = 0; x < 10 || y < 100; x++, y++) {
....
}
7
Suroot

Je permet de faire des opérations et des comparaisons dans le même contexte.

Exemple:

if(a = 2, a > 1) console.log('a is', a)
0
vinyll