当我只是在玩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中的函数都是可变参数。无论函数签名如何,都可以传递任意数量的参数。