假设 -
function noname(a, b) {
//code
}
我给 -
noname(4,5,6,7);
那会发生什么?
答案 0 :(得分:9)
其他参数将被忽略。
然而,它们将作为arguments
伪数组的一部分提供,例如作为arguments[2]
,arguments[3]
。
如果您提供更少的变量,那么缺少的变量将是undefined
。
答案 1 :(得分:0)
正如Alnitak所说,他们变成undefined
,因为他们没有任何约束力,除非如上所述:arguments[i]
被使用。
一个好的做法是首先使用所有函数上可用的.length
方法测试函数所声明的原始参数的数量。
noname.length === 2 // in your case
这使得更容易保存任何其他参数(以防万一我们可能想要使用它们)
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);