查看内容

bet体育娱乐平台-JavaScript中callee和caller的区别与用法实例分析

本文说明了JavaScript中被调用方和调用方的区别和用法。分享给大家参考,如下:

bet体育娱乐平台有两个特殊对象:论点和这个。其中,arguments是一个类似数组的对象,包含了所有引入到bet体育娱乐平台的参数。

虽然参数的主要目的是保存下注体育娱乐平台的参数,但是这个对象有一个下注体育娱乐平台-被调用者,它是指向拥有这个参数对象的下注体育娱乐平台的指针

/*

*普通递归分层下注体育娱乐平台

*/

函数阶乘(num){

if(num=1){

返回1;

}else{

返回num *阶乘(num-1);

}

}

以上代码运行没有问题,但是这个赌球运动娱乐平台的执行是和赌球运动娱乐平台名字factorial紧密耦合的。如果改了投注体育娱乐平台名,里面的投注体育娱乐平台名也会改,很不方便,所以我们就用了

//使用calleebet体育娱乐平台递归分级下注体育娱乐平台

函数阶乘1(num){

if(num=1){

返回1;

}else{

返回num * arguments . caller(num-1);

}

}

根据被调用者的定义,被调用者是自变量对象的bet体育娱乐平台,指向带有自变量对象的bet体育娱乐平台。这个下注体育娱乐平台是factorial 1(factorial 1=arguments . callee),它们都指向上面的递归下注体育娱乐平台。请记住,下注体育娱乐平台的名字只是一个包含指针的变量。

调用者是下注体育娱乐平台对象的下注体育娱乐平台,持有下注体育娱乐平台调用当前下注体育娱乐平台(指向当前下注体育娱乐平台的直接母下注体育娱乐平台)的参考

函数a(){//家长赌体育娱乐平台

b();

};

函数b(){

console . info(b . caller);

};

(a);//结果就是弹出更好的体育娱乐平台A和内容

可以看出,bet体育娱乐平台B bet体育娱乐平台调用方调用当前bet体育娱乐平台B的bet体育娱乐平台引用A(即指向当前bet体育娱乐平台B的母bet体育娱乐平台A)

函数b(){

alert(b . caller);

};

从这个代码可以看出,bbet体育娱乐平台名称是在bbet体育娱乐平台中调用的,所以当bet体育娱乐平台名称发生变化时非常不方便,我们需要更换里面的B

之前,我们知道如何指向当前对象,所以让我们修改它:

(函数a(){

b();

})();

函数b(){

alert(arguments . caller . caller);//用参数替换b。被调用方

};

如果一对兔子每个月生一对兔子;一对新生兔子从第二个月开始生兔子;假设每对兔子是雌兔和雄兔,那么一对兔子在第n个月可以繁殖多少对兔子?(与被呼叫者完成)

var result=[];

函数fn(n){

if(n==1){

返回1;

}else if(n==2){

返回1;

}else {

if(result[n]){

返回结果[n];

}else{

//arguments . caller(.)=fn(.)

result[n]=arguments . calleer(n-1)arguments . calleer(n-2);

返回结果[n];

}

}

}