Pourquoi aaa = 1,2,3
fonctionne-t-il et définit-il la valeur de aaa
à 1
?
Pourquoi var bbb = 1,2,3
fonctionne pas?
Pourquoi var bbb = (1,2,3)
fonctionne-t-il et définissez-vous la valeur de bbb
à 3
?
Il y a beaucoup de choses ici, mais, en gros, cela revient à l' opérateur de comes.
L'opérateur de coma évalue ses deux opérandes (de gauche à droite) et renvoie la valeur du second opérande.
DdddddddélMMM HébergementTemetteMachinetteMachélMachéMachea
aaa = 1,2,3
Est équivalent à:
aaa = 1; 2; 3;
Ainsi, aaa
est implicitement déclaré et a attribué une valeur de 1. Notez que la sortie sur la console est le résultat de la dernière déclaration, 3.
DdddddddélMMM HébergementTemetteMachinetteMachélMachéMachea
var bbb = 1,2,3
Est une erreur de syntaxe car les virgules dans les déclarations de variables sont utilisées pour déclarer plusieurs variables en une seule ligne. Comme le souligne l'article de MDN,
Notez que la virgule dans l'instruction
var
n'est pas l'opérateur de virgule, car elle n'existe pas dans une expression. Plutôt, il s'agit d'un caractère spécial dans les relevésvar
pour combiner plusieurs d'entre eux en un seul.
Donc, ce code équivaut à peu près à:
var bbb = 1; var 2; var 3;
Bien sûr, 2
n'est pas un identifiant valide, donc il échoue à ce point.
DdddddddélMMM HébergementTemetteMachinetteMachélMachéMachea
var bbb = (1,2,3)
Est très similaire à la première, sauf que les valeurs numériques sont enveloppées entre parenthèses, elles sont d'abord évaluées. Donc, cela équivaut à:
1; 2; var bbb = 3;
Comma a plusieurs utilisations en Javascript. Dans l'expression:
a = 1, 2, 3;
C'est un opérateur qui renvoie simplement son argument de droite. Mais cela fait également partie de la syntaxe des déclarations var
, qui sont:
var var1 [ = val1 ], var2 [ = val2 ], var3 [ = val3 ], ...;
(Où [...]
signifie que cette partie est facultative). Votre déclaration var
manque de nom de variable après les virgules, donc il ne pas analyser. Vous pourriez avoir l'effet que vous vouliez avec:
var a = (1, 2, 3);
Les parenthèses forcent les virgules à être considérées comme des opérateurs plutôt que des délimiteurs entre des déclarations variables.
Dans vos exemples, la virgule est utilisée dans deux contextes:
var
L'instruction syntaxe de var
est:
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
Ici, la virgule sert à séparer les paires nom-valeur variable. Ce qui suit ne fonctionnera pas car un nom de variable ne peut pas commencer par un chiffre (voir les noms d'identifiant ):
var bbb = 1, 2, 3; // SyntaxError: Unexpected number
L'opérateur de coma évalue ses deux opérandes (de gauche à droite) et renvoie la valeur du second opérande. Les expressions suivantes fonctionnent comme suit:
aaa = 1, 2, 3;
aaa = 1, 2
donne 2
aaa = 1
est évalué en premier parce que =
a une priorité plus élevée que ,
2, 3
donne 3 var bbb = (1, 2, 3);
(1, 2, 3)
donne 3
comme décrit ci-dessus bbb
reçoit la valeur 3
Dans le premier cas:
Aaa = 1,2,3
Les virgules servent de séparateurs d'expressions. Il effectue une affectation à aaa
, puis il calcule 2
et le jette, puis il calcule 3
et le rejette.
Dans la seconde:
var bbb = 1,2,3
Le mot-clé var
indique au compilateur Javascript que la prochaine chose après a ,
devrait être un autre nom de variable. Il ne se trouve pas sur, donc il meurt et gags.
var bbb = (1,2,3)
Ici, le compilateur évalue d'abord 1
et l'ignore. Ensuite, il évalue 2
et l'ignore. Ensuite, il évalue 3
et cela reste sur la pile, donc il est affecté à bbb
En utilisant des virgules pour séparer des expressions n'est pas commun, il est parfois utile dans des choses comme for
regards.
for (i = 0, l = 10; i < l; i++) { console.log(i); }