Javascript每日一学-解读JS中的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加深对它的理解。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G1UP5W00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券