我是靠谱客的博主 动听飞机,最近开发中收集的这篇文章主要介绍JavaScript中的参数对象arguments的callee属性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

众所周知,对象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属性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部