arguments,想说爱你不容易

时间:2022-05-04
本文章向大家介绍arguments,想说爱你不容易,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

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