Cet article présente principalement la définition des appels de fonctions JavaScript et les précautions. Les amis dans le besoin peuvent se référer à
Définition de la fonction
Définition de l'instruction de fonction
function(a,b){ return a+b; }
Définition d'expression
var add = function(a,b){return a+b};
//Les expressions de fonction peuvent contenir des noms, qui lorsqu'ils sont récursifs Très utile var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }
Fonction définie comme une expression, le nom de la fonction est facultatif. Si l'expression de définition de fonction contient un nom, la portée locale de la fonction contiendra un nom lié à l'objet fonction. En fait, le nom de la fonction deviendra une variable locale à l'intérieur de la fonction
. Spécifications de dénomination de la fonction
1.like_this()Le premier caractère est en minuscule. Lorsqu'il contient plusieurs mots, les mots sont séparés par des traits de soulignement
2.likeThis()Le premier caractère est. minuscule, lorsqu'il contient plusieurs mots, les premières lettres des mots sauf le premier mot utilisent des lettres universitaires
3. Les fonctions internes ou fonctions privées sont généralement préfixées par un trait de soulignement
Remarque : Fonction Le L'instruction de déclaration est avancée en haut du script externe ou de la fonction externe, elle peut donc être appelée par le code qui apparaît avant sa définition
Avant de définir une fonction en tant qu'expression, elle doit être affectée à une variable. Par conséquent, les fonctions définies en mode expression ne peuvent pas être appelées avant la définition
Valeur de retour de la fonction
L'instruction return renvoie la valeur de la fonction au appelant.
Il n'y a pas d'instruction return, alors elle renvoie undéfini
Fonction imbriquée
Les fonctions imbriquées peuvent accéder aux paramètres et variables de leurs fonctions
Mais les fonctions imbriquées ne peuvent pas apparaître dans les boucles, les conditions ou les instructions try/cache/finally/with
Appel de fonction
comme fonction
comme méthode
en tant que constructeurs
appellent indirectement via leurs méthodes call() et apply()
En fonction call
add(1,2)
Selon les dispositions d'ECMAScript3 et d'ECMAScript5 non strict pour les appels de fonction, le contexte d'appel (la valeur de celui-ci) est l'objet global. En mode strict, cependant, le contexte d'appel n'est pas défini.
//Définir une fonction et appeler une fonction pour déterminer si le script actuel s'exécute en mode strict var strict = (function(){return this;}());
Appeler en tant que méthode
var o = { m:1, n:2, add:function(){ this.result = this.m+this.n; } }
Une différence majeure entre les appels de méthode et les appels de fonction. ----Contexte d'appel
o.add() Le contexte d'appel de add est o, c'est-à-dire : this
o.add() est équivalent à o['add']()
chaîne de méthodes : Lorsque la méthode n'a pas besoin de renvoyer de valeur, il est préférable de renvoyer directement this
this est un mot-clé, pas une variable ou un nom d'attribut. La syntaxe JavaScript ne permet pas d'attribuer une valeur à ceci
Contrairement aux variables, le mot-clé this n'a aucune restriction sur son effet. Les fonctions imbriquées n'hériteront pas de celle-ci de la fonction qui l'appelle. var self= this ;Enregistrer dans la variable
Si la fonction imbriquée est appelée en tant que fonction, sa valeur pointe vers l'objet qui l'a appelée. S'il est appelé en fonction, il s'agit soit d'un objet global (mode non strict), soit d'un objet indéfini (mode strict)
Appel du constructeur
var o = new Object();
Les appels de constructeur, les appels de fonctions ordinaires et les appels de méthodes sont traités dans les paramètres réels. Il existe des différences sur des aspects tels que le contexte d'appel et la valeur de retour.
Les parenthèses peuvent être omises pour tout appel de constructeur sans paramètres formels.
var o = new Object(); var o = new Object; //等价
L'appel du constructeur crée un nouvel objet vide. Cet objet hérite de l'attribut prototype du constructeur. Cette fonction tente d'initialiser l'objet nouvellement créé. Cet objet sert de contexte, le constructeur peut donc utiliser le mot-clé this pour faire référence à l'objet nouvellement créé.
new o.m() Le contexte de l'appel n'est pas o.
Le constructeur n'utilise pas return. Si le constructeur renvoie explicitement un objet à l'aide de l'instruction return, alors la valeur de l'expression appelante est cet objet. Si le constructeur ne renvoie pas de valeur ou renvoie une valeur primitive, la valeur de retour est ignorée et un nouvel objet est utilisé comme résultat de retour.
Appel indirect
call()
appy()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!