我们在使用 js 函数时经常会传参数, ECMAScript 是不限制函数传几个参数, 也不介意参数是什么类型. 因为参数的内部使用一个数组表示的, 所以你不管传递多少参数, 函数接收的都是一个数组, 这个数组就是用 arguments 对象表示.
调用 showArg 函数并且传递了 5 个参数
我们在控制台看下:
参数保存在 arguments 对象中
arguments 对象与数组类似, 但是它并不是 Array 的实例化. 我们访问其中的参数, 便可以用数组访问元素的方式.
如下:
web 前端学习扣 qun:437813258 免费领取全套教学视频资料!
童靴们可能在给函数传递参数的时候直接在函数的括号里面命名参数:
但是小编上面的例子中都没有给函数的参数命名, 这也体现了 ECMAScript 的一个特点: 命名的参数只是提供一个便利, 但它并不是必需的.
另外, 我们可以使用 length 获取参数的长度. 如下,
web 前端学习扣 qun:437813258 免费领取全套教学视频资料!
浏览器中查看:
我们可以利用这一点让函数接收任意个参数来实现某些功能, 如下,
web 前端学习扣 qun:437813258 免费领取全套教学视频资料!
上面的函数所实现的功能是, 如果只有一个参数, 那么让变量 result 的值等于该参数加上 1. 如果有两个参数, 那么让变量 result 的值等于两个参数相加.
关于 arguments 还有一个特点就是, 它的值与对应命名的参数的值保持一致的.
- function addNum(){
- arguments[0]=10;
- console.log(arguments[0]+arguments[1])
- }
- addNum(1,5)
上面的函数调用后输出的结果是 15, 因为每次执行 addNum() 函数, 都会把第一个参数重写. 第一个参数的值应该和 arguments[0] 的值一致, 所以被改成了 10.
来源: http://www.jianshu.com/p/469e0e04636a