This question already has answers here:
Method overloading in Javascript

(10个答案)


4年前关闭。




当我只是在玩JS时,我写了以下代码段:
function checkArgs(abc,nbn,jqrs){
    console.log("overloaded " +arguments.length);
}

function checkArgs(abc){
    console.log(arguments.length);
}

checkArgs("aa","lll","pp");

我将输出视为“3”,但是我期望输出为“Overloaded 3”。但是我没有发生,但是如果我只交换那些方法的位置,它的确会发生。
 function checkArgs(abc){
        console.log(arguments.length);
    }


  function checkArgs(abc,nbn,jqrs){
        console.log("overloaded " +arguments.length);
    }

    checkArgs("aa","lll","pp");

它背后的原理是什么?

最佳答案

javascript中没有函数重载。

最新的方法声明始终会覆盖具有相同名称的前一个方法。没有引发任何错误。

javascript中的函数都是可变参数。无论函数签名如何,都可以传递任意数量的参数。

09-26 19:22