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

Analyse de la différence entre l'appelé et l'appelant dans les compétences javascript_javascript

WBOY
Libérer: 2016-05-16 16:03:13
original
1121 Les gens l'ont consulté

appelée

l'appelé est un attribut de l'objet, qui est un pointeur pointant vers la fonction de l'objet arguments
Tout d’abord, écrivons une fonction de commande :

function chen(x){
if (x<=1) {
return 1;
} else{
return x*chen(x-1);
};
};
Copier après la connexion

Comme le montre cette fonction, une fonction récursive est utilisée. Si le nom de la fonction est modifié, le nom de la fonction à l'intérieur changera également, c'est très gênant, nous utilisons donc l'appelé pour l'essayer
.

function chen(x){
if (x<=1) {return 1;
}else{
return x*arguments.callee(x-1);
};
};
Copier après la connexion

Analysons pourquoi c'est écrit comme ceci : D'après la définition de l'appelé, on peut voir que l'appelé est un attribut de l'objet arguments et pointe vers une fonction de l'objet arguments. Cette fonction est chen (chen=arguments. .callee). Cette explication devrait être compréhensible.

appelant

l'appelant est un attribut de l'objet fonction, qui contient une référence à la fonction qui appelle la fonction actuelle (pointant vers la fonction parent directe de la fonction actuelle)

Prenons d'abord un exemple

function a(){
b();
};
function b(){
alert(b.caller);
};
a(); //结果就是弹出函数a和内容
Copier après la connexion

Expliquons-le. Tout d'abord, l'appelant d'attribut de la fonction b appelle la référence de fonction a de la fonction actuelle b (qui pointe vers la fonction parent a de la fonction actuelle b), donc le résultat est cette fonction a(){ b();}; apparaît ;

Maintenant que vous comprenez l'appelant et l'appelé, pouvez-vous combiner les deux pour les utiliser ?

function b(){
alert(b.caller);
};
Copier après la connexion

À partir de ce code, nous pouvons voir que le nom de la fonction b est appelé dans la fonction b. C'est très gênant lorsque le nom de la fonction change. Nous devons remplacer le b
. Auparavant nous savions pointer vers l'objet courant, modifions-le ensuite :

(function a(){
b();
})();

function b(){
alert(arguments.callee.caller);
};

Copier après la connexion

Comme le montre le code, nous avons remplacé la fonction b par arguments.callee, le problème a donc été résolu. . . . .

Ce qui précède représente l’intégralité du contenu de cet article, j’espère que vous l’aimerez tous.

É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