我有两个具有相同名称但功能定义不同的JavaScript函数(一个是参数少,另一个是两个参数)。当我尝试从代码隐藏调用参数less函数时,它总是调用参数化函数。但是当我删除paramterized函数时,将调用没有参数的函数。我想知道为什么会这样:
e.g;
<script>
function A()
{
alert(1);
}
function A(param1 , param2)
{
alert(2);
}
</script>
来自代码隐藏:
Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "A()", true);
结果: ALER(2);
答案 0 :(得分:2)
JavaScript不支持具有相同名称和不同参数的两个函数。因为一切都是对象,所以名称才重要。参数只是函数的元数据。
这些功能必须有不同的名称才能发挥作用。
答案 1 :(得分:0)
Javascript不支持函数重载。
请参阅此Stack Overflow question的接受答案,这可能会对您有所帮助。
答案 2 :(得分:0)
如果要在JavaScript中实现函数重载,可以使用JavaScript中的每个函数都具有的arguments对象。 arguments对象只是一个类似于对象的数组,它包含传递给函数的参数/参数。您可能需要稍微改变一下方法。
试试这个:
function A() {
if(arguments.length === 1) {
// code for one argument goes here
}
if(arguments.length === 2) {
// code for two arguments goes here
}
// your further logic if needed
}
现在您可以使用不同的参数调用函数A,如下所示:
A(1); // code for arguments.length === 1 gets executed
A(1, 2); // code for arguments.length === 2 gets executed
注意:这不完全是函数重载,而是试图解决一种没有重载的问题。
希望这有帮助。
答案 3 :(得分:0)
实际上,实际行为是- Javascript将使用最后一个函数覆盖具有相同名称(即使它们具有不同的参数编号/类型)的所有先前编写的函数。 因此,无论您在函数调用中提供什么参数-它始终是将被调用的最后一个函数。