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:严格模式,是指将代码中的错误提前到编译期来发现、调试、处理,以增加程序的健壮性; 标准模式,是批代码中的错误放到运行期处理,这种模式对调试程序不是太好。)
软件工程中对象之间的耦合度就是对象之间的依赖性。

你可能感兴趣的:(浏览器脚本)