Maison  >  Article  >  interface Web  >  Définition, appels et problèmes auxquels il convient de prêter attention dans les fonctions JavaScript

Définition, appels et problèmes auxquels il convient de prêter attention dans les fonctions JavaScript

零下一度
零下一度original
2017-04-17 14:46:331353parcourir

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!

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