我在javascript(Chrome和IE)中有2个功能:
function call(param1, param2){
console.log("call param - 2");
}
和
function call(param1){
console.log("call param - 1");
}
我打电话是这样的:
call(1,2);
但是我在控制台上收到了这个:
call - param - 1
答案 0 :(得分:2)
JavaScript中没有函数重载。
答案 1 :(得分:2)
您要做的是function overloading
。很遗憾,它不适用于JavaScript。
但如果需要,你可以随时尝试模拟它。
请查看此链接,其中讨论了最佳方法:
答案 2 :(得分:1)
您可以使用arguments
。
function call(){
console.log("call param - " + arguments.length);
}
call(1);
call(1,2);
call(1,2,3);
答案 3 :(得分:1)
解决方案是使用内部条件的单个函数。
function call(param1, param2){
if(param2){
console.log("call param - 2");
} else if(param1) {
console.log("call param - 1");
} else {
console.log("call invalid");
}
}
答案 4 :(得分:0)
您正试图超载“呼叫”功能。 Javascript不支持函数重载。
解决方案可以是分离函数,每个用例都有不同的名称。
答案 5 :(得分:0)
首先,js不检查参数计数:你可以用任意数量的参数调用任何函数。
其次,声明一个函数意味着与声明相同,所以对于js引擎,你的代码是
var call = fun1
var call = fun2
与
相同var call
......
call = fun1
call = fun2
对于函数定义,该值也将被提升,因此它实际上是
var call = fun2
......
所以,它将永远是后者。
如果要访问普通函数中的所有参数,可以使用arguments
,或者执行此操作
function f(foo, bar, ...args) {...}
箭头函数中的没有arguments
答案 6 :(得分:0)
如果在call(param1)
之后定义call(param1, param2)
,则将call
重新分配给call(1,2)
引用。因此,当您致电call(param1)
时,会调用<xsl:value-of select="person/@doctor" separator=", "/>
。在JS中没有函数重载这样的东西。你可以利用arguments object来实现接受变量参数的函数。