概述
众所周知,对象arguments的主要用于保存函数参数,但这个对象还有一个名叫callee的属性,该属性是一个指针,用于指向拥有该arguments对象的函数。其一个很重要的用途就是降低函数与函数名的耦合程度。还是举例说明吧,请看下面这个非常经典的递归函数。
例1:
function factorial(num){
if(num<=1){
return 1;
}else{
return num*factorial(num-1);
}
}
在上面的这个例子中,如果函数名以后不会变的情况下,这样定义是没有问题的。但问题是这个函数的执行与函数名factorial紧紧耦合在一起。我们先看一个函数名改变的例子。
例2:
var trueFactorial = factorial;
factorial = function(){
return 0;
};
alert(trueFactorial(5));//0
alert(factorial(5));//0
这违背了我们的初衷,我们希望alert(trueFactorial(5));这条语句返回120。为了消除这种紧密耦合的现象,可以向下面这样使用arguments.callee。
例3:
function factorial(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
修改之后,再执行例2,alert(trueFactorial(5));语句的结果为120,alert(factorial(5));语句的结果为0。即接触了函数体内的代码与函数名的耦合状态之后,trueFactorial()仍然可以正确的计算阶乘。
最后
以上就是动听飞机为你收集整理的JavaScript中的参数对象arguments的callee属性的全部内容,希望文章能够帮你解决JavaScript中的参数对象arguments的callee属性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复