Si j'utilise:
1.09 * 1; // returns "1.09"
Mais si j'utilise:
1,09 * 1; // returns "9"
Je sais que 1,09 n'est pas un nombre.
Que fait la virgule dans le dernier morceau de code?
Plus d'exemples
if (0,9) alert("ok"); // alert
if (9,0) alert("ok"); // don't alert
alert(1); alert(2); alert(3); // 3 alerts
alert(1), alert(2), alert(3); // 3 alerts too
alert("2",
foo = function (param) {
alert(param)
},
foo('1')
)
foo('3'); // alerts 1, 2 and 3
javascript
comma-operator
Topera
la source
la source
alert
ne prend qu'un seul argument. Tout ce qui suit est jeté.arguments
objet à la place, qui peut être de n'importe quelle longueur). Même avec le JS compilé moderne, il n'y aurait aucun moyen de dire à l'avance combien d'arguments une fonction prendrait. Considérez ceci:function test() { args=[]; for (var i = 0; i < arguments.length; i++) { args.push(arguments[i] + 1); } ;
l'interpréteur devrait savoir comment la fonction était utilisée pour savoir combien d'arguments cela prendrait. Au lieu de cela, il évalue tout.Réponses:
Source: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special_Operators/Comma_Operator
Par exemple, l'expression est
1,2,3,4,5
évaluée à5
. De toute évidence, l'opérateur virgule n'est utile que pour les opérations avec des effets secondaires.la source
for
boucle.continue
points sans duplication, mais alors vous ne devriez pas avoir plusieurscontinue
points.Quelques autres à considérer:
la source
alert("1", alert("2", alert("3")))
last
opérande.Jetez un œil ici - la virgule représente plusieurs expressions / déclarations. Par exemple, dans votre code, vous pouvez utiliser une ligne comme celle-ci:
Cela déclarerait les trois variables sans écrire:
J'espère que cela pourra aider.
la source
var
déclarations n'utilisent pas l' opérateur virgule , même si c'est une virgule) et (2) vous ne pouvez pas séparer déclarations utilisant les opérateurs virgule; seules les expressions sont autorisées.https://stackoverflow.com/a/3561056/5934465
Ça devrait être comme ça!
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
la source
a,b,c,d
is((((a),b),c),d)
Ajouter / modifier des propriétés à un objet et le renvoyer dans la même ligne est un cas d'utilisation possible:
La fonction anonyme ci-dessus renvoie un objet avec des valeurs aléatoires plus grandes que la valeur d'entrée ou, s'il n'y en a pas, avec la valeur d'entrée elle-même dans un tableau contenu dans la
bigger
propriété.C'est toujours du sucre syntaxique (comme les fonctions fléchées ), mais cela raccourcit le nombre de lignes ... Je me demande si certains minificateurs JS détectent et ajustent automatiquement le code de la même manière. Exécutez-le dans votre console:
la source