Function Javascript函数参数问题

Function Javascript函数参数问题,function,javascript,Function,Javascript,我试图编写一些javascript函数,并意识到 function testFunction(input_1, input_2, input_3) { alert("alert"); } 但是,当我这样调用函数时: <input type="button" value="click" onclick="testFunction("1", "2")"> 为什么即使只有两个参数,它仍然可以工作?因为javascript将您的参数视为一个数组;如果您从未超出第二项,它

我试图编写一些javascript函数,并意识到

function testFunction(input_1, input_2, input_3) {
       alert("alert");
}
但是,当我这样调用函数时:

<input type="button" value="click" onclick="testFunction("1", "2")">


为什么即使只有两个参数,它仍然可以工作?

因为javascript将您的参数视为一个数组;如果您从未超出第二项,它将不会注意到缺少参数。

第三个参数可以是可选的,并且将具有空默认值。
如果您明确需要一个参数,那么这是另一种情况

您可以使用任意数量的参数调用Javascript函数,而不管函数的定义如何

任何未传递的命名参数都将
未定义


额外的参数可以通过
参数
类数组对象访问。

因为参数是可选的

一些阅读:
Javascript是一种非常动态的语言,对于未传递值的任何参数,它都会假定一个“未定义”的值。

实际上,提供多少参数并不重要。函数解释它们并创建
参数
对象(充当参数数组)。 下面是一个例子:

function sum(){
   if(arguments.length === 0)
       return 0;
   if(arguments.length === 1)
       return arguments[0];
   return arguments[0] + sum.apply(this, [].slice.call(arguments, 1));
}

这不是最有效的解决方案,但它提供了函数如何处理参数的短峰值。

尝试使用以下代码

var CVH = {
        createFunction: function (validationFunction, extParamData, extParamData1) {
            var originalFunction = validationFunction;
            var extParam = extParamData;
            var extParam1 = extParamData1;

            return function (src, args) {
                // Proxy the call...
                return originalFunction(src, args, extParam, extParam1);
            }
        }
    }


function testFunction(input_1, input_2, input_3) {
       alert("alert");
}
您可以如下调用此函数

<input type="button" value="click" onclick="CVH.createFunction(testFunction('1', '2'),'3','4')">


Javascript不支持方法重载,因此方法将按其出现的顺序执行,与传递的参数无关,因为Javascript对参数或所需数量的参数没有类型检查,您可以只使用一个testFunction()实现可以通过检查参数的类型、存在或数量来适应传递给它的参数。

因为javascript是动态的?它没有类型,也不强制参数符合性。
onclick=“testFunction”(“1”,“2”)”>
应该是
onclick=“testFunction”(“1”,“2”)”>
。令人兴奋的问题是,你可以用更少、更多或没有参数来调用函数。您甚至可以访问非参数的参数。testFunction中的第四个参数('1','2','3','4')甚至可以在函数内部使用参数[3]进行访问+1我的朋友。最后,第三个参数将是
未定义的
@Ahman San谢谢你的回答,但是明确地使参数complusive的实际方法是什么?@简化:通过测试它是否是
未定义的
,并抛出一个错误。根据可接受的值,您可以通过多种方式执行
if(parameter)
。一种方法是,您可以在函数中实现一个条件来检查每个参数的值,如果任何参数未定义,则返回一些信息,告诉您某些数据丢失。否则,您可以忽略函数的其余部分并退出它immediately@simplified-稍微扩展一下Felix和Ahmad San所说的,没有办法强制使用参数,即使用一些关键字让JavaScript自动抛出错误,因此,需要在函数中编写自己的测试作为NeeDe.谢谢您的回复,但是如果我有几个参数,中间的一些将会是空的,是否有一种方法可以将正确的参数传递到函数的正确接收端?@sim:只需传递
null
false
或任何其他值。@simplified.:否,参数将始终按顺序分配给参数。如果要“跳过”一个,则必须传递另一个值,如
null
。更具体地说,它是
参数
数组。函数声明中的命名参数只是指向
参数
成员的指针,而这段代码可能会解决这个问题,解决这个问题的方式和原因将真正有助于提高文章的质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请您的回答添加解释,并说明适用的限制和假设。抱歉,此回答不相关,我误解了问题