arguments对象
来源:互联网 发布:农业 知乎 编辑:程序博客网 时间:2024/05/20 03:43
函数中,有一个默认的对象,不需要你去声明,也不需要你去赋值,它叫做arguments,它是一个数组,保存着参数列表。先来看一个例子:
注意,arguments对象保存的是实参。接下来,我们要展示JavaScript中非常有意思的一个东西,也是JavaScript灵活性的一大体现。在这之前,我们先来谈下C中的函数重载。
维基中的定义为:函数重载(Function overloading),是Ada、C++、C#、D和Java等编程语言中具有的一项特性,这项特性允许创建数项名称相同但功能的输入输出类型不同的子程序,它可以简单地称为一个单独功能可以执行多项任务的能力。
在函数重载中,输出类型可相同可不同,但参数列表一定要不一样,可以是数量不一样或者类型不一样,或者两者都不一样。
但在JavaScript这类弱类型语言中,类型无法预定义,即输入和输出类型无法从函数定义看出来。那么只剩一项了,参数列表的长度,即参数数量。但这真的有影响吗?
实际上,JavaScript没有函数重载,实参比形参长的后果仅仅是没有给实参一个别名而已。不懂?我们来看下例子:
我们可以巧妙的利用arguments对象,来达到我们的目的。我们甚至可以对上面的做个扩展,让它能把所有参数的和返回,即使形参列表为空。
那如果相反,形参列表长度比实参列表长呢?
我们可以看到,超出实参长度的形参部分,就会是undefined,从而返回我们并不想要的结果(NaN表示应该是个number类型结果却是其他类型)。我们可以稍作修改:
利用逻辑操作符的特性来将形参实例化,保证使用时形参不为undefined。当然,这样也有个别问题,如果传入的实参逻辑值也是false(例如0、undefined、null)等等,我们就需要用全等符号进行判断了,在此例中不做要求。
0 0
- arguments对象
- Arguments对象
- Arguments对象
- arguments对象
- arguments对象
- arguments 对象
- arguments对象
- arguments 对象
- arguments对象
- arguments对象
- arguments对象
- Javascript中的arguments 对象
- JavaScript中的arguments对象
- Javascript 的 arguments对象
- ECMAScript arguments 对象
- JavaScript中arguments对象
- JavaScript中arguments对象
- javascript arguments对象
- eclipse 导入静态类,自动代码提示静态方法
- 用脚本创建animator控制器
- tomcat 源码学习
- Spring Ioc就是对java反射及读取xml文件的使用的封装
- 心灵语句
- arguments对象
- Android 阴影学习
- 多线程设置超时 测试端口是否打开
- 关于大型网站技术演进的思考(一):存储的瓶颈(1)
- adb命令查看app内存占用信息
- MacBook怎样装Win10 双系统玩转Win10
- 设计模式 - AbstactFactory 模式
- caller与callee
- 关于大型网站技术演进的思考(二):存储的瓶颈(2)