js函数参数对象arguments对象分析
2014-03-17 15:28
615 查看
关于JS函数参数,可谓是非常灵活,实参的传递可以不用跟形参的定义个数保持一致。
例如:function demo(x,y,z,){
return x+y;
}
demo(1,2);
demo(1,2,3,4)
这样去调用函数都可以正常执行。这是因为实参的传递都不是简单的一一对应的赋值给形参x,y。而是被赋值给了arguments这个对象。
虽然是对象,但是拥有length这个属性,可以判定实际传递实参的个数,并且通过下标可以访问到对应的属性。如arguments[arguments.length-1]则可以访问到函数最后一个实参的值,如果定义好的形参传递了实参,该形参则跟arguments对象的属性可共享同一个值,否则不共享。例如:
(function demo2 (x,y){
x = 2;
y = 10;
console.log(x)//输出为2
console.log(arguments[0])//输出为2
console.log(y) //输出为10
console.log(arguments[1])//undefinded
arguments[1] = 20;
console.log(y) //输出为10
console.log(arguments[1])//输出为20
})(1)
利用这个条语句,var args = Array.prototype.slice.call(arguments) 可转化为数组。arguments对象还有一个属性 callee,可以获取当前函数。
(function demo3 (){
console.log(arguments.callee) //输出demo3
})();
例如:function demo(x,y,z,){
return x+y;
}
demo(1,2);
demo(1,2,3,4)
这样去调用函数都可以正常执行。这是因为实参的传递都不是简单的一一对应的赋值给形参x,y。而是被赋值给了arguments这个对象。
虽然是对象,但是拥有length这个属性,可以判定实际传递实参的个数,并且通过下标可以访问到对应的属性。如arguments[arguments.length-1]则可以访问到函数最后一个实参的值,如果定义好的形参传递了实参,该形参则跟arguments对象的属性可共享同一个值,否则不共享。例如:
(function demo2 (x,y){
x = 2;
y = 10;
console.log(x)//输出为2
console.log(arguments[0])//输出为2
console.log(y) //输出为10
console.log(arguments[1])//undefinded
arguments[1] = 20;
console.log(y) //输出为10
console.log(arguments[1])//输出为20
})(1)
利用这个条语句,var args = Array.prototype.slice.call(arguments) 可转化为数组。arguments对象还有一个属性 callee,可以获取当前函数。
(function demo3 (){
console.log(arguments.callee) //输出demo3
})();
相关文章推荐
- 【JS--基础--函数】--隐含参数对象arguments的callee 属性
- js中每个函数中隐含的arguments对象,用语表示调用时实际传递的参数
- 使用js内置对象arguments求函数的所有参数的和
- js 函数的参数 问题 arguments对象 及闭包
- js、函数的分类、对象、arguments、函数参数
- JS函数的参数对象arguments在严格模式下的限制
- JS克隆,属性,数组,对象,函数实例分析
- JS学习 用 arguments 对象模拟函数重载
- JS函数多个参数默认值指定方法分析
- JS基础篇--函数实际参数转换成数组的方法[].slice.call(arguments)
- js 字符中 带 函数 再传对象参数
- JS函数的参数(arguments)的使用
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
- js中函数参数arguments、callee、caller,值传递、重载
- Thin的DateChooser代码学习(关于js的函数参数为一个完整的函数以及“对象不支持此属性或方法”错误的解决)(原创,转载请声明)
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
- js加强:js引擎,变量作用域,arguments对象,特殊函数,闭包
- js 理解函数参数----arguments
- 献给和我合作的过得前端童靴们:jquery源码分析--核心函数(使用函数作为参数创建jQuery对象)