前言
在Javascript中,arguments是所有函数都具有的一个内置局部变量,表示的是函数实际接收的参数对象。
Javascript中的arguments对象
arguments是一个类数组对象,之所以说是类数组,是因为它除了具有length属性外,不具有数组的一些常用方法,接下来我们就一起看看arguments对象的一些特性。
通过索引访问
可以通过索引访问arguments对象的值。
索引访问
arguments由实际参数决定
arguments对象的值由实际参数决定,而不是由定义的形参决定,形参与arguments对象占用独立的内存空间。关于arguments对象与形参之间的关系,大家记住以下三句话。
指定的形参传递值的情况下,arguments对象与形参值相同,并且可以相互改变。
指定的形参未传递值的情况下,arguments对象对应的索引值返回undefined。
指定的形参未传递值的情况下,arguments对象与形参值不能相互改变。
argumens对象与形参
通过以上3句总结,相信大家可以很容易知道对应的结果 。
Javascript没有重载
在诸如C++,Java等面向对象语言中,存在函数重载的概念。函数重载表示的是在函数名相同的情况下,通过函数形参参数类型或者参数个数的不同,来确定定义的函数。
在Javascript中,由于不能通过形参的个数来确定实际传递参数的个数,因此Javascript中并没有函数重载特性。
Javascript中没有重载
上面定义了两个method3函数,两者的形参个数不一样,在调用的时候只传递两个参数,但是调用的确是下面一个method3方法,这可以证明Javascript中是没有函数重载,相同函数名的函数是会被后面定义的覆盖的。
arguments.callee
arguments.callee返回的是当前执行的函数,这个属性在使用递归执行的时候非常使用。
以下例子就是通过arguments.callee实现的斐波那契数列方法。
arguments.callee
arguments对象扩展
arguments是一个类数组对象,但是可以通过call方法将其扩展一个真实的数组对象。例如下面的方法将arguments对象进行扩展,使其具有slice方法。
arguments对象扩展
定义连接字符串的函数
通过对arguments对象进行扩展,实现一个函数,只定义一个表示连接符的形参。但在实际调用的时候,除了表示连接符的参数,后续参数表示待连接的值。
定义连接字符串的函数
定义创建列表的方法
在HTML中,通常使用ul或者ol来创建一个列表,我们首先一个函数,在传递参数为‘u’时,生成一个ul列表;传递参数为‘o’时,生成一个ol列表。
定义创建列表的方法
通过传递不同的参数,来确定生成的是有序的ol列表还是无序的ul列表,然后配合DOM操作,即可在页面上生效。
总结
今天这篇文章讲的是Javascript中的arguments对象,虽然在平时用的不是很多,但是关于它的知识点也是要掌握的,希望大家多写些demo加深对它的理解。
还没有评论,来说两句吧...