Maison  >  Article  >  interface Web  >  Type de fonction dans les compétences ECMAScript_javascript

Type de fonction dans les compétences ECMAScript_javascript

WBOY
WBOYoriginal
2016-05-16 15:57:071254parcourir

En parlant de ce qui précède dans ECMAScript, je pense que la chose la plus intéressante est la fonction. La raison pour laquelle c'est intéressant est que la fonction est en fait un objet. Chaque fonction est une instance du type Function et possède les mêmes propriétés et méthodes que les autres types référence. Puisque les fonctions sont des objets, le nom de la fonction est en fait un pointeur vers l’objet fonction et ne sera pas lié à une fonction. Les fonctions sont généralement définies à l'aide de la syntaxe de déclaration de fonction, comme dans l'exemple suivant :

Copier le code Le code est le suivant :

fonction somme(num1,num2)
{
Retourner num1 num2;
>

C'est presque la même chose que la manière ci-dessous pour définir une fonction à l'aide d'une expression de fonction.

Copier le code Le code est le suivant :

var somme=fonction(num1,num2)
{
Retourner num1 num2;
};

Le code ci-dessus détermine la somme des variables et l'initialise en fonction. Vous remarquerez qu’il n’y a pas de nom de fonction après le mot-clé function. En effet, lors de la définition d'une fonction à l'aide d'une expression de fonction, il n'est pas nécessaire d'utiliser le nom de la fonction (la fonction peut être référencée via la somme variable). Notez également qu'il y a un point-virgule à la fin de la fonction, tout comme lors de la déclaration d'autres variables.

La dernière façon de définir une fonction est d'utiliser le constructeur Function. Le constructeur Function peut accepter n'importe quel nombre de paramètres, mais le dernier paramètre est toujours considéré comme le corps de la fonction et les paramètres précédents énumèrent les paramètres de la nouvelle fonction. Exemple ci-dessous :

Copier le code Le code est le suivant :

var sum=new Function("num1","num2","return num1 num2");//Non recommandé

D'un point de vue technique, il s'agit d'une expression de fonction. Cependant, nous ne recommandons pas d'utiliser cette méthode pour définir des fonctions, car cette syntaxe entraîne l'analyse du code deux fois (d'abord pour analyser le code ECMAScript normal, et ensuite pour analyser la chaîne passée dans le constructeur), ce qui affecte les performances. Cependant, cette syntaxe est très intuitive pour comprendre le concept « les fonctions sont des objets et les noms de fonctions sont des pointeurs ».

Puisque les noms de fonctions sont simplement des pointeurs vers des fonctions, les noms de fonctions ne sont pas différents des autres variables contenant des pointeurs d'objet. Autrement dit, une fonction peut avoir plusieurs noms, comme dans l'exemple suivant :

Copier le code Le code est le suivant :

fonction somme(num1,num2)
{
Renvoie num1 num2;
>
alerte(somme(10,10));//20
var autreSomme=somme;
alert(anotherSum(10,10));//20
somme=null;
alert(anotherSum(10,10));//20

Le code ci-dessus définit d'abord une fonction nommée sum(), qui est utilisée pour trouver la somme de deux valeurs. Ensuite, la variable anotherSum est déclarée et définie sur l'égalité sum() (attribuant la valeur de sum à anotherSum). Notez que l'utilisation d'un nom de fonction sans parenthèses accède au pointeur de fonction, sans appeler la fonction. À ce stade, anotherSum et sum pointent vers la même fonction, donc anotherSum() peut également être appelée et renvoyer le résultat. Même si sum est défini sur null, ce qui le "déconnecte" de la fonction, il s'avère toujours normal d'appeler anotherSum().

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tous ceux qui apprennent le javascript.

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