HTML5学堂-码匠:arguments是关于函数参数的一个知识点,也是很多企业面试时的“必考点”,arguments和形参有何不同?如何去检测实参或形参的长度?一起来看看吧!
什么是arguments
arguments是一个类数组。
类数组
类数组:拥有length属性,其它属性(索引)为非负整数,但并不具有数组的方法。
典型的类数组
典型的类数组:DOM节点列表(通过DOM操作获取的标签列表)、arguments。
形参与实参
什么是形参
形参:表示的是“形式参数”,是在定义函数名和函数体时使用的参数,用于接收调用该函数时传递的参数。
形参的作用
实现主调函数与被调函数之间的联系。
函数的形参意义何在
将“函数所处理的数据”,“影响函数功能的因素”或“函数处理的结果”作为形参。主要目的在于——提升函数的复用性。
什么是实参
表示的是“实际参数”,是在函数调用时,传入函数的内容。实参可以是常量、变量、表达式、函数等, 但是,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值。
arguments与参数的关系
arguments与实参
arguments对象的长度是由实参个数决定的(不是形参个数)。换言之,arguments接收到的是实参的值,而形参是函数内部“重新开辟”内存空间存储的变量(也就是局部变量)。
function h5course(name) {
console.log(name);
console.log(arguments[0]);
}
h5course('HTML5学堂');
运行结果:
'HTML5学堂'
'HTML5学堂'
内存空间问题
形参的空间与arguments对象内存空间并不重叠。
如果形参和arguments都存在,则这两者值是同步的;
如果形参和arguments当中,有其中之一无值,则此值不会得以同步。
function h5course(name) {
console.log(name);
arguments[0] = '码匠';
console.log(name);
}
h5course('HTML5学堂');
运行结果:
'HTML5学堂' '码匠'
function h5course(name, age) {
console.log(age);
console.log(arguments[1]);
arguments[1] = 2;
console.log(age);
console.log(arguments[1]);
}
h5course('HTML5学堂');
运行结果:
'undefined'
'undefined'
'undefined'
2
arguments.callee
arguments.callee的作用
arguments.callee 属性表示当前正在执行的函数。
function h5course(name, age) {
console.log(arguments.callee);
}
h5course('HTML5学堂');
运行结果:
function h5course(name, age) {
console.log(arguments.callee);
}
获取形参与实参的长度(数量)
使用arguments.callee.length检测形参的数量(长度);
使用arguments.length检测实参的数量(长度)。
function h5course(name, age) {
console.log(arguments.length);
console.log(arguments.callee.length);
}
h5course('HTML5学堂');
运行结果:
1
2
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有