经典(非js)重载方法:
function myFunc(){
//code
}
function myFunc(overloaded){
//other code
}
Run Code Online (Sandbox Code Playgroud)
Javascript不会让同一个名称定义多个函数.因此,这样的事情出现了:
function myFunc(options){
if(options["overloaded"]){
//code
}
}
Run Code Online (Sandbox Code Playgroud)
除了传递带有重载的对象之外,javascript中的函数重载是否有更好的解决方法?
传入重载会很快导致函数变得过于冗长,因为每个可能的重载都需要条件语句.使用函数来完成//code这些条件语句的内部可能会导致范围棘手的情况.
我在我的Javascript代码中使用如下方法重载.
function somefunction()
{
//1st function
}
function somefunction(a)
{
//2nd function
}
function somefunction(a,b)
{
//3rd function
}
somefunction(); // function call goes here
Run Code Online (Sandbox Code Playgroud)
我不明白的是,如果我调用somefunction()javascript应该调用第一个函数,但问题是javascript实际上调用第三个函数.这是为什么?如何调用第1和第2功能?这是什么原因?有没有一种在Javascript中实现方法重载的正确方法?什么是行业标准?
假设我有一个myfunc最多可以使用两个参数的函数:arg1和arg2:
var myfunc = function (arg1,arg2) {
console.log(arg1,arg2);
};
Run Code Online (Sandbox Code Playgroud)
我想只使用arg2. 但是,当我运行它时,输入被传递给第一个参数,并且myfunc会记录"input" undefined而不是undefined "input"按预期。
myfunc(arg2 = 'input')
> "input" undefined
Run Code Online (Sandbox Code Playgroud)
Javascript 支持这种类型的输入吗?