当我在Javascript中提供比函数中所需的更多参数时会发生什么?

时间:2012-08-31 14:32:59

标签: javascript

假设 -

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

我给 -

noname(4,5,6,7);

那会发生什么?

2 个答案:

答案 0 :(得分:9)

其他参数将被忽略。

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

如果您提供更少的变量,那么缺少的变量将是undefined

答案 1 :(得分:0)

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

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

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

这使得更容易保存任何其他参数(以防万一我们可能想要使用它们)

jsFiddle Demo

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);