Maison > interface Web > js tutoriel > le corps du texte

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

WBOY
Libérer: 2016-05-16 16:43:18
original
1312 Les gens l'ont consulté

Déclaration de fonction

function foo() {}
Copier après la connexion

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() {}
Copier après la connexion

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(){}
Copier après la connexion

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

!function foo(){}
true && function foo(){}
Copier après la connexion

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');
};
Copier après la connexion

Expression de fonction anonyme

var foo = function() {};
Copier après la connexion

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

foo; // 'undefined'
foo(); // this raises a TypeError
var foo = function() {};
Copier après la connexion

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
Copier après la connexion

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.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal