当我在Javascript中给出的参数超过函数所需的参数时会发生什么
What happens when I give more parameters than required in the function in Javascript?
假设-
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);
相关文章:
- 当一个重要的构造函数参数丢失时应该发生什么
- 用javascript记录传递给回调的参数的约定是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 当我在Javascript中给出的参数超过函数所需的参数时会发生什么
- 什么's是调用具有可变参数的函数的有效方法
- DOJO声明中可选className参数的用途是什么
- 什么时候可以对条件参数使用管道运算符?-JavaScript
- 两者之间有什么区别..函数中的参数和参数
- 几何位置的参数格式是什么
- context参数在underscore.js中做什么
- 什么时候需要在javascript中的函数中将对象作为参数传递
- 将一个函数及其参数传递给另一个函数以执行它的语法是什么
- 在这种情况下,有什么方法可以向`.call()`发送更多的参数吗
- 什么's将数组传递给app.get()的第一个参数的替换项
- 您将使用什么参数来调用此函数以获取指定的输出
- 我可以在 javascript 中使用函数参数的不同方法是什么
- SAEF 中的参数是什么意思
- “function(){ 返回这个 }()” 作为参数做什么
- 填充的参数什么都没有被填充
- InDesign CS5 / Extendscript -- exportFile 的参数是什么,它的相关属性是什么