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 获得的结果是一样的

  而传入false0 以及空字符串都被解析为缺失参数

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。 

 
原文地址:https://www.cnblogs.com/mousehhq/p/4309399.html