Quelqu'un pourrait-il m'expliquer ce qui se passe à la deuxième ligne ?
var foo = function(){alert("hello?")};
(0,foo)();
Quelqu'un pourrait-il m'expliquer ce qui se passe à la deuxième ligne ?
var foo = function(){alert("hello?")};
(0,foo)();
L'infâme expression de la virgule a,b
évalue les deux arguments et renvoie la valeur de l'expression de droite.
Donc, dans ce cas, c'est exactement la même chose que foo();
.
Voici un meilleur exemple qui vous aidera à comprendre ce qui se passe :
function foo() {
print("foo called");
return 123;
}
function bar() {
print("bar called");
return 456;
}
var result = (foo(), bar());
print("result:", result);
Salida:
foo called
bar called
result: 456
De même, l'expression de la virgule peut être confondue avec la virgule délimitant les arguments de la fonction. Ce n'est pas la même chose ! Notez la différence :
print("result:", foo(), bar() ); // 3 arguments, no comma operator
print("result:", (foo(), bar()) ); // 2 arguments, comma operator
Il évalue les deux expressions dans la première parenthèse et exécute la seconde (dans ce cas - une fonction).
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Comma_Operator
Puisque l'opérateur virgule en javascript évalue plusieurs opérandes et renvoie le dernier. MDN :
L'opérateur virgule évalue ses deux opérandes (de gauche à droite) et renvoie la valeur du second opérande.
Votre expression (0,foo)
renvoie à foo
qui est ensuite invoquée par la paranthèse, placée après elle.
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.