我在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中实现方法重载?行业标准是什么?
somefunction()
JavaScript不支持方法重载(如Java或类似方法),您的第三个函数将覆盖之前的声明。
而是通过argumentsobject支持变量参数。你可以做
arguments
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.length为1。这可能允许使用各种参数进行轻松调用,例如,当您可能有空变量时。
typeof a =="undefined"
somefunction(undefined)
arguments.length
1