3

认为 -

function noname(a, b) {
//code
}

我给 -

noname(4,5,6,7);

那时会发生什么?

4

2 回答 2

9

附加参数将被忽略。

然而,它们将作为arguments伪数组的一部分提供,例如arguments[2], arguments[3]

如果您提供的变量少于所需的变量,那么缺少的变量将是undefined.

于 2012-08-31T14:33:40.310 回答
0

正如 Alnitak 所说,它们成为,undefined因为它们没有任何约束力,除非如说明:arguments[i]被使用`。

.length一个好的做法是首先使用所有函数上可用的方法来测试函数声明了多少原始参数。

noname.length === 2 // in your case

这样可以更轻松地保存任何其他参数(以防万一我们可能想要使用它们)

jsFiddle 演示

function noname (a, b) {
    console.log('Original parameters in this function: ' + noname.length);

    var additionalParameters = [];

    if (arguments.length > noname.length) {
        for (i = 0; i < arguments.length - noname.length; i++) {
            // We need to start arguments off at index: 2 in our case
            // The first 0 & 1 parameters are a, b

            additionalParameters[i] = arguments[i + noname.length];
            // These of course will be saved starting at 0 index on additionalParameters
        }
    }

    console.log(additionalParameters);
}

noname(1, 2, 3, 4, 5);

​</p>

于 2012-08-31T14:42:21.253 回答