JS之arguments属性解读函数传参?
2014-11-05 14:34
316 查看
Arguments
该对象代表正在执行的函数和调用他的函数的参数。
arguments属性:为当前执行中的Function对象返回arguments对象和参数。
[function.]arguments
参数说明:
参数function:选项。当前正在执行的Function对象的名字。
n:表示传递过来的参数下标索引
1.对于参数对象
说明:Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。
在函数中定义形参接受参数
2.callee属性返回正在执行的函数对象
返回正在执行的function对象,也就是所指定的Function对象的正文。
callee属性是arguments对象的一个成员,他表示对函数对象本身的引用,这有利于匿名函数的递归或确保函数的封装性,该属性只在函数正在执行时可用
注意:callee拥有length属性,arguments.length是实参度,arguments.callee.length是形参长度,由此能够判断调用时形参长度是否和实参长度一致。
<scripttype="text/javascript">
(function(o){
alert(o);
returnarguments.callee;
})('water')('down');
</script>
递归执行函数
递归计算:递归计算1到n的自然数之和?
其中函数内部包含了对sum自身的引用,函数名仅仅是个变量名,在函数内部调用sum即相当于调用一个全局变量,不能很好的体现出是调用自身,这时使用callee会是个比较好的方法。
该对象代表正在执行的函数和调用他的函数的参数。
arguments属性:为当前执行中的Function对象返回arguments对象和参数。
[function.]arguments
参数说明:
参数function:选项。当前正在执行的Function对象的名字。
n:表示传递过来的参数下标索引
1.对于参数对象
说明:Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。
<script> varresult=function(){ alert(arguments.length);//返回2 alert(arguments[0]);//返回123 }; result(123,'nihjao'); </script> 可知:在没有定义形式参数变量的情况下爱,也传过来了参数,并被arguments接受。所以arguments是一个隐藏对象
在函数中定义形参接受参数
varresult=function(y){ alert(y); alert(result.arguments[0]); //返回123 alert(arguments[1]); //返回nihao alert(arguments.length); //返回2arguments.length是指实参长度 alert(arguments.callee.length); //返回1arguments.callee.length是形参长度 }; result(123,'nihjao'); </script> 此时:函数定义了一个形参y接受传过来的参数,只接受第一个
2.callee属性返回正在执行的函数对象
返回正在执行的function对象,也就是所指定的Function对象的正文。
functioncalleeDemo(){ alert(arguments.callee); }
callee能够打印函数其本身
callee属性是arguments对象的一个成员,他表示对函数对象本身的引用,这有利于匿名函数的递归或确保函数的封装性,该属性只在函数正在执行时可用
注意:callee拥有length属性,arguments.length是实参度,arguments.callee.length是形参长度,由此能够判断调用时形参长度是否和实参长度一致。
<scripttype="text/javascript">
(function(o){
alert(o);
returnarguments.callee;
})('water')('down');
</script>
递归执行函数
递归计算:递归计算1到n的自然数之和?
varsum=function(n){
if(n<=0)return1;
elsereturnn+arguments.callee(n-1)
}
比较一般的递归函数:
varsum=function(n){
if(1==n)return1;
elsereturnn+sum(n-1);
}
调用时:sum(100);
其中函数内部包含了对sum自身的引用,函数名仅仅是个变量名,在函数内部调用sum即相当于调用一个全局变量,不能很好的体现出是调用自身,这时使用callee会是个比较好的方法。
相关文章推荐
- JS一起学02:函数传参、操作属性第二种方式、提取行间事件、循环、this、焦点问题、联动选择、选项卡焦点图
- js 函数内部属性arguments.callee
- 【JS--基础--函数】--隐含参数对象arguments的callee 属性
- js函数内部属性arguments和this
- js中函数的arguments属性
- js函数的内部属性---arguments,callee,caller
- JS-7.函数传参arguments
- JS函数内部属性之arguments和this实例解析
- js:函数的内部属性Arguments(callee、this)
- JS函数内部属性:arguments
- Ferris教程学习笔记:js示例2.10 函数传参,改变Div任意属性的值
- EXT传递参数的问题 js函数的参数传递(arguments)
- js 获取函数的所有参数和遍历JavaScript某个对象所有的属性名称和值的方法
- js的arguments,callee,caller,length,prototype属性
- VC/MFC中通过CWebPage类调用javascript函数(给js函数传参,并取得返回值)
- jquery源码阅读知识储备(7)JS函数中的argument属性
- JS两个函数之间的传参
- 显示js对象所有属性和方法的函数
- js中函数期望的参数个数测试,利用变量名.length属性
- js中每个函数中隐含的arguments对象,用语表示调用时实际传递的参数