Maison  >  Article  >  interface Web  >  Notes d'étude Javascript : Fonctions (1) : Déclaration de fonction et Expression de fonction_Connaissances de base

Notes d'étude Javascript : Fonctions (1) : Déclaration de fonction et Expression de fonction_Connaissances de base

WBOY
WBOYoriginal
2016-05-16 16:43:181312parcourir

Déclaration de fonction

function foo() {}

La fonction foo sera levée avant que l'ensemble du programme ne soit exécuté, elle est donc disponible dans toute la portée où la fonction foo est définie. Il n'y a aucun problème même s'il est appelé avant que la fonction ne soit définie.

foo(); // Works because foo was created before this code runs
function foo() {}

Parce que j'ai l'intention d'écrire un article spécial présentant le scope, je n'entrerai pas dans les détails ici.

Expression de fonction

Pour les déclarations de fonction, le nom de la fonction est requis, mais pour les expressions de fonction, il est facultatif. Par conséquent, les expressions de fonction anonymes et les expressions de fonction nommées apparaissent. Comme suit :

Déclaration de fonction : function functionName (){ }
Déclaration de fonction : function functionName[optional](){ }
Alors je sais que s'il n'y a pas de nom de fonction, ce doit être une expression de fonction, mais comment juger le cas où il y a un nom de fonction ?
Javascript stipule que si le corps entier de la fonction fait partie d'une expression, alors c'est une expression de fonction, sinon c'est une déclaration de fonction. Voici l'expression :

var fuc = foo(){}

Donnons quelques exemples d’expressions extrêmes supplémentaires :

!function foo(){}
true && function foo(){}

L'instruction ci-dessus sert uniquement à distinguer les expressions de fonction et n'est généralement pas écrite comme ceci. Utilisez ensuite un exemple comparatif pour voir l'effet :

foo1();//foo1 is not defined 
foo2();//works because foo2 was created before this code runs
!function foo1() {
  alert('foo1 works');
};
function foo2() {
  alert('foo2 works');
};

Expression de fonction anonyme

var foo = function() {};

L'exemple ci-dessus attribue une fonction anonyme à la variable foo.

foo; // 'undefined'
foo(); // this raises a TypeError
var foo = function() {};

Puisque var est une déclaration, la variable foo est hissée ici, donc lorsque le programme est exécuté, la variable foo est appelable.
Mais comme l'instruction d'affectation ne prend effet qu'au moment de l'exécution, la valeur de la variable foo n'est pas définie.

Expression de fonction nommée

Une autre chose dont il faut parler est l'attribution de fonctions nommées.

var foo = function bar() {
  bar(); // Works
};
bar(); // ReferenceError

Ici, la fonction nommée bar est affectée à la variable foo, elle n'est donc pas visible en dehors de la déclaration de la fonction, mais peut toujours être appelée à l'intérieur de la fonction bar. Cela est dû à la façon dont Javascript gère les fonctions nommées. Le nom d'une fonction est toujours valide dans la portée à l'intérieur de la fonction.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn