arguments.callee

Js避免耦合的方法:arguments.callee

 耦合是指两个或两个以上的模块之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传递值的现象。

我们要知道:
arguments.length 是实参长度
arguments.callee.length 是形参长度

举例如下:

function test(x,y,z)
{
    checkArgu(arguments);
    return x+y+z;
}

function checkArgu(argu)
{
    var argu_test1, argu_test2;
    argu_test1 = argu.length;
    argu_test2 = argu.callee.length;

    if(argu_test1 == argu_test2)
        alert(argu_test2);
    else
        alert(argu_test1);
}

test(1,2,3);//3
test(1,2,3,4);//4

JS中使用arguments.callee实现匿名函数的递归

var b=(function(n){
if(n>=1) return n+arguments.callee(n-1);
else return 0; 
})(10);
alert(b);//55

注:
arguments是函数内部的一个特殊对象,其中callee属性是一个指针,指向拥有这个arguments对象的函数。为了实现更松散的耦合,还可以使用arguments.callee.caller;注意:严格模式下使用arguments.callee会出错。
(PS:严格模式,是指将代码中的错误提前到编译期来发现、调试、处理,以增加程序的健壮性; 标准模式,是批代码中的错误放到运行期处理,这种模式对调试程序不是太好。)
软件工程中对象之间的耦合度就是对象之间的依赖性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值