当我在Javascript中给出的参数超过函数所需的参数时会发生什么

What happens when I give more parameters than required in the function in Javascript?

本文关键字:参数 什么 函数 Javascript      更新时间:2023-09-26

假设-

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

我给

noname(4,5,6,7);

届时会发生什么?

附加参数将被忽略。

然而,它们将作为arguments伪阵列的一部分可用,例如作为arguments[2]arguments[3]

如果您给变量比所需的要少,那么缺少的变量将是undefined

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