JavaScript参数处理的基本原理
一、你可以传递任意数量的参数
当调用一个 function 时,你想传递多少参数都可以,这与该函数声明了多少个正式的参数无关。 缺失参数的值是 undefined,多出来的参数则直接被忽略掉。
二、所有传递的参数都储存在 arguments 中
所有传递的参数都储存在一个很特别、很像 Array(继续看就能知道为什么了)的变量里——arguments。
通过下面的function 我们来看下这个变量怎么用的:
function g() { console.log('Length: '+arguments.length); console.log('Elements: '+fromArray(arguments));// fromArray 函数,它把 arguments 转换成 array 这样就能存入数据了 }
调用 g():
> g() Length: 0 Elements: > g('a') Length: 1 Elements: a > g('a', 'b') Length: 2 Elements: a,b
无论明确声明了多少个参数,arguments 是永远在那里的,它总是包含所有实际的参数。
如果调用者没有提供参数,那么 undefined 就会传递给 function。 你不传参数与传入 undefined 获得的结果是一样的
而传入false、0 以及空字符串都被解析为缺失参数
Tips1:
我们可以用 || 来指定参数默认值:
function add(x, y) {
x = x || 0;
y = y || 0;
return x + y;
}
三、arguments 不是 array
arguments 并不是 array,它只是很像 array,你可以获取第 i 个参数比如 arguments[i], 你也可以检查它有多少个参数比如 arguments.length。 但是你不能用 Array 的方法如 forEach 或者 indexOf。

浙公网安备 33010602011771号