45 votes

Syntaxe de la définition de la fonction Javascript

Double Possible:
JavaScript: var nomfonction = function() {} vs fonction nomfonction() {}
Déclarer les fonctions en JavaScript

J'ai vu les 2 syntaxes différentes pour définir des fonctions en javascript:

function f() {
   ...
}

Ainsi que

var f = function() {
    ...
};

Quelle est la différence entre ces? L'un d'eux est obsolète?

46voto

Marshall Points 2498

Ni sont obsolètes, et les deux fonctionneront. La différence ici est que l'on est un nom de fonction ( function f() ) tandis que l'autre est une variable est égale à une fonction ( var f = function() ).

Vous devez être prudent lors de la définition des variables de l'égalité de fonctions. Cela va fonctionner:

var f = function(n) { console.log(n); };
f(3); // logs 3

Mais cela va briser, 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 de travail de l'amende.

function abc(n) { console.log(n); }

abc(3); // logs 3
xyz(5); // logs 5

function xyz(n) { console.log(n); }

C'est parce que le code est analysé avant l'exécution, et toutes les fonctions sont disponibles à l'appel. Mais la définition d'une variable égale à une fonction comme paramètre une var à autre chose. L'ordre de quand il arrive, c'est important.

Maintenant, pour certains, plus de confusion des choses...

Il ya aussi des "self-executing" anonyme fonctions. Ils passent par une variété de noms. La façon la plus courante de le faire il ressemble à quelque chose comme ceci:

(function() {
    // code in here will execute right away
    // since the () at the end executes this (function(){})
})();

Il y a aussi sans doute la meilleure version.

!function() {
    // again, the tailing () will execute this
}();

Découvrez ce Débordement de Pile post pour en savoir plus sur les fonctions anonymes.

Prograide.com

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.

Powered by:

X