<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="详解js arguments,js callee caller" id="card1">
<p> 游客</p><p>
标题:详解js arguments,js callee caller<br/>
正文:<br/>
在写复杂的js函数时，经常会用到js中arguments, jcallee caller，理解这些，对于阅读框架源代码有很大的帮助，比如github上的js框架等。关键字:arguments,callee,callerarguments:表示传入函数的参数callee:表示函数和函数主体的语句caller:表示调用该函数的函数arguments该对象代表正在执行的函数和调用它的函数的参数。caller返回一个对函数的引用，该函数调用了当前函数。functionName.callerfunctionName 对象是所执行函数的名称。说明对于函数来说，caller属性只有在函数执行时才有定义。如果函数是由顶层调用的，那么 caller包含的就是 null 。如果在字符串上下文中使用 caller 属性，那么结果和functionName.toString一样，也就是说，显示的是函数的反编译文本。callee返回正被执行的 Function 对象，也就是所指定的Function 对象的正文。[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称。说明callee 属性的初始值就是正被执行的 Function 对象。callee 属性是 arguments对象的一个成员，它表示对函数对象本身的引用，这有利于匿名函数的递归或者保证函数的封装性，例如下边示例的递归计算1到n的自然数之和。而该属性仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性，这个属性有时候用于验证还是比较好的。arguments.length是实参长度，arguments.callee.length是形参长度，由此可以判断调用时形参长度是否和实参长度一致。复制代码代码如下:function test(x,y,z) { alert(&amp;quot;实参长度:&amp;quot;+arguments.length);alert(&amp;quot;形参长度:&amp;quot;+arguments.callee.length);alert(&amp;quot;形参长度:&amp;quot;+test.length);alert(arguments[ 0 ])      &amp;n<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=720&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=720&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=720&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=720&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=720&amp;Page=4">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=720">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=720">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>