3 回答
TA贡献1719条经验 获得超6个赞
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.length为1。这可能允许使用各种参数进行轻松调用,例如,当您有可能为空的变量时。
TA贡献1831条经验 获得超4个赞
JS将传递undefined未提供的任何参数。如果您想要类似重载的操作,则需要执行类似于以下代码的操作:
function someFunction(a, b) {
if (typeof a === 'undefined') {
// Do the 0-parameter logic
} else if (typeof b === 'undefined') {
// Do the 1-parameter logic
} else {
// Do the 2-parameter logic
}
}
TA贡献2080条经验 获得超4个赞
您只是在somefunction每个新声明中擦除变量。
这相当于
window.somefunction = function(...
window.somefunction = function(...
window.somefunction = function(...
Javascript不提供方法重载。
正确的方法是:
定义第三个功能并测试定义了哪些参数
只传递一个包含参数的对象(这并没有什么不同,但更干净)
添加回答
举报