Duplicata possible:
JavaScript: var functionName = function () {} vs function functionName () {}
Déclaration de fonctions en JavaScript
J'ai vu 2 syntaxes différentes pour définir des fonctions en javascript:
function f() {
...
}
Aussi bien que
var f = function() {
...
};
Quelle est la différence entre ceux-ci? L'un d'eux est-il obsolète?
Aucun des deux n'est obsolète et les deux fonctionneront. La différence ici est que l'une est une fonction nommée (function f()
) tandis que l'autre est une variable égale à une fonction (var f = function()
).
Vous devez être prudent lorsque vous définissez des variables égales à des fonctions. Cela fonctionnera:
var f = function(n) { console.log(n); };
f(3); // logs 3
Mais cela se cassera, puisque la variable est définie après l'appel à elle.
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
Mais les fonctions normales fonctionnent bien.
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
En effet, le code est analysé avant l'exécution et toutes les fonctions sont disponibles pour appeler. Mais définir un var égal à une fonction, c'est comme définir un var à autre chose. L'ordre dans lequel cela se produit est important.
Maintenant, pour des trucs plus confus ...
Il existe également des fonctions anonymes "auto-exécutables". Ils portent différents noms. La façon la plus courante de procéder ressemble à ceci:
(function() {
// code in here will execute right away
// since the () at the end executes this (function(){})
})();
Il existe également une version sans doute meilleure.
!function() {
// again, the tailing () will execute this
}();
Découvrez ce post Stack Overflow pour en savoir plus sur les fonctions anonymes.