arguments.callee用法和caller的用法
2017-07-04| 程成| 1433| 1| jQuery/JS

今天在看别人代码的时候,出现了arguments.callee(),百度后才知道了arguments.callee()的用法。


1、arguments


    arguments:  在函数调用时, 会自动在该函数内部生成一个名为 arguments的隐藏对象。 该对象类似于数组, 但又不是数组。可以使用[]操作符获取函数调用时传递的实参。

    看上去很简单。 需要注意的是 argument 保存的实参的信息。只有函数被调用时,arguments对象才会创建,未调用时其值为null。


2、caller


    在一个函数调用另一个函数时,被调用函数会自动生成一个caller属性,指向调用它的函数对象。如果该函数当前未被调用,或并非被其他函数调用,则caller为null。


<script>  
function testCaller() {  
    var caller = testCaller.caller;  
    alert(caller);  
}  
  
function aCaller() {  
    testCaller();  
}  
  
aCaller();
</script>


image.png


3、callee


arguments.callee 在哪一个函数中运行,它就代表哪一个函数。 一般用在匿名函数中。

在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调。

这时就可以用arguments.callee来代替匿名的函数。


(function(n){
    if(n > 1) return n* arguments.callee(n-1);
    return n;
})(10);


上述代码就是用匿名函数实现的计算10的阶乘。用arguments.calle代替匿名函数。


以上就是arguments.callee用法和caller的用法。


×
作者:程成
QQ:492245711