js方法重载

平时都是写java,今天需要修改下前端的一个bug,遇到了这个问题;有些疑惑,所以试验了下;

我理解的方法重载:具有相同方法名,且参数列表个数或类型任一不同;调用方根据不同的输入调用对应匹配的方法;

先说结论:js不支持方法重载。

最好的证明就是写个例子跑下;

验证:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		
	</body>
	<script>
		function test(arg1) {
			return 'test1:'+arg;
		}
		
		function test(arg1,arg2,arg3) {
			return 'test2:'+arg1+arg2+arg3;
		}
		
		function test(arg1,arg2) {
			return 'test3:'+arg1+arg2;
		}
		
		console.log("test('你','好','世界'):"+test('你','好','世界'));
		console.log("test(10086):"+test(10086));
		console.log("test('你好世界'):"+test('你好世界'));
	</script>
</html>

控制台结果:

结果全部都是走了第三个方法,入参多传的会被丢弃,少的未传值形参为undefined。

可以看出,调用同名方法时和参数个数无关,由于js是弱类型语言,方法申明形参时无需指定入参类型,所以和参数类型也无关;

和方法调用的顺序有关?

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		
	</body>
	<script>
		function test(arg1) {
			return 'test1:'+arg;
		}
		console.log("test('你','好','世界'):"+test('你','好','世界'));
		
		function test(arg1,arg2) {
			return 'test3:'+arg1+arg2;
		}
		console.log("test('你好世界'):"+test('你好世界'));
		
		function test(arg1,arg2,arg3) {
			return 'test2:'+arg1+arg2+arg3;
		}
		console.log("test(10086):"+test(10086));
	</script>
</html>

结果依然执行了最后一个方法;且和调用的顺序无关;

结论:js不支持方法重载,同名方法会被最后装载的方法覆盖;

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值