为了账号安全,请及时绑定邮箱和手机立即绑定

js如何实现函数重载?

js如何实现函数重载?

西兰花伟大炮 2017-04-22 23:43:09
查看完整描述

3 回答

?
会飞的四脚蛇

TA贡献5条经验 获得超3个赞

js没有其他语言比如java函数重载的概念,js的函数名相同只会覆盖,后定义函数覆盖先定的函数,但是js可以模拟函数重载。

@星典 的例子,明显的函数覆盖,绝不是重载,永远只会执行最后定定义的f函数.

function f(length) 
{ 
    alert("高为:"+length); 
} 
 
function f(length,width) 
{ 
    alert("高为:"+length+",宽为:"+width); 
}
f()  //高为:undefined,宽为:undefined
f(99) // 高为:99,宽为:undefined
f(99,1000) // 高为:99,宽为:1000


如上函数改为以下才是js模拟的重载

function f(length,width) {
    var len =arguments.length;
    if( len===0 ){
        alert("请传入参数");
    }
    if( len ===1){
        alert("高为:"+length);
    } 
    if( len ===2){
        alert("高为:"+length+",宽为:"+width);
    } 
}

f() // 请传入参数
f(99) // 高为:99
f(99,1000) //高为:99,宽为:1000


查看完整回答
2 反对 回复 2017-04-23
已采纳
?
田心枫

TA贡献1064条经验 获得超383个赞

function f(length) 
{ 
    alert("高为:"+length); 
} 

function f(length,width) 
{ 
    alert("高为:"+length+",宽为:"+width); 
}

方法重载不都这样吗

查看完整回答
反对 回复 2017-04-22
  • 会飞的四脚蛇
    会飞的四脚蛇
    这不是重载,后定义的f函数覆盖先定义的f函数,调用的永远是最后一个定义的同名函数。 重载是不同的函数可以用相同的函数名,调用时自动根据定义时不同的参数列表调用不同的函数。
  • 西兰花伟大炮
    西兰花伟大炮
    你说的对的
  • 3 回答
  • 0 关注
  • 1772 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信