Heim > Web-Frontend > js-Tutorial > Hauptteil

js 中arguments.callee实例详解

WBOY
Freigeben: 2016-06-01 09:54:55
Original
1156 Leute haben es durchsucht

callee :返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
说明 : callee 属性的初始值就是正被执行的 Function 对象。

callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时候用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是形参长度,由此可以判断调用时形参长度是否和实参长度一致。

实例一:
callee可以打印其本身。

<code><script type="text/javascript">
    function calleeDemo() {
        alert(arguments.callee);//运行结果:function calleeDemo() {alert(arguments.callee);} 
    } 
</script></code>
Nach dem Login kopieren

 
实例二:
 callee用于验证参数

<code><script type="text/javascript"> 
function calleeLengthDemo(arg1, arg2) {
     if (arguments.length==arguments.callee.length) {
         window.alert("验证形参和实参长度正确!");
         return;
     } else {
         alert("实参长度:" +arguments.length);
         alert("形参长度: " +arguments.callee.length);
     }
}
</script></code>
Nach dem Login kopieren

 
实例三:
callee递归的应用:
一般递归是这么写,但这样有一个弊端,当函数名称改变时,递归调用的函数名称也需要改变。

<code><script type="text/javascript"> 
var sum = function(n){
    if (1==n) 
        return 1;
    else 
        return n + sum (n-1);
</script></code>
Nach dem Login kopieren

 
这时,我们使用arguments.callee来改进递归的调用。如下:

<code><script type="text/javascript">  
var sum = function(n){
    if (n <= 0)                        
        return 1;
    else
        return n +arguments.callee(n - 1)
}
</script></code>
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!