小编典典

JavaScript中的方法重载

javascript

我在Javascript代码中使用以下方法重载。

function somefunction()
{
    //1st function
}

function somefunction(a)
{
   //2nd function
}

function somefunction(a,b)
{
   //3rd function
}

somefunction(); // function call goes here

我不明白的是,如果我调用somefunction()javascript应该调用第一个函数,但是问题是javascript实际上调用了第三个函数。这是为什么?如何调用第一和第二函数?这是什么原因呢?有没有一种合适的方法可以在Javascript中实现方法重载?行业标准是什么?


阅读 258

收藏
2020-05-01

共1个答案

小编典典

JavaScript不支持方法重载(如Java或类似方法),您的第三个函数将覆盖之前的声明。

而是通过argumentsobject支持变量参数。你可以做

function somefunction(a, b) {
    if (arguments.length == 0) { // a, b are undefined
        // 1st body
    } else if (arguments.length == 1) { // b is undefined
        // 2nd body
    } else if (arguments.length == 2) { // both have values
        // 3rd body
    } // else throw new SyntaxError?
}

你也可以只检查typeof a =="undefined"等,这将允许呼叫somefunction(undefined),其中arguments.length1。这可能允许使用各种参数进行轻松调用,例如,当您可能有空变量时。

2020-05-01