Cet article résume les problèmes courants liés aux définitions de fonctions JavaScript. Contient les erreurs courantes commises par les débutants. Partagez-le avec tout le monde pour votre référence. Le résumé spécifique est le suivant :
1. Lorsque la fonction est déclarée, le moteur JS définit également une variable avec le même nom que le nom de la fonction. Lorsque nous appelons cette fonction, nous utilisons en fait cette variable, et elle peut être appelée avant que la fonction ne soit déclarée. , comme
foo(); //这里实际上是使用了一函数变量 function foo() { alert('hello'); }
2. Expression de fonction. À ce stade, la fonction anonyme est affectée à une variable qui doit être utilisée après avoir été définie, comme
.foo(); //报错,未定义 var foo = function() { alert('hello'); }
3. Expression de fonction (avec nom de fonction), il est préférable d'éviter cette utilisation pour le moment, le nom de fonction n'est disponible qu'en interne dans les navigateurs non-IE, tels que
.bar(5); //报错,未定义 var bar = function foo(n) { if (n == 1) return 1; else return n * foo(n - 1); } foo(5); //非IE报错,未定义 bar(5); //正确
4. Définissez-le avec le constructeur de fonction. Cette méthode est inefficace. Chaque fois que la fonction est exécutée, son corps de fonction sera analysé. De plus, une fonction déclarée de cette manière n'héritera pas de la portée de la position de déclaration actuelle. Elle n'aura que la portée globale par défaut, comme
.function foo() { var bar = 'hello'; return Function('alert(bar)'); //报错,全局变量bar未定义 } foo()();
Je crois que ce qui est décrit dans cet article a une certaine valeur de référence pour l’apprentissage par chacun de la programmation WEB javascript.