&l_js方法重载">
当前位置:   article > 正文

js方法重载

js方法重载

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

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

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

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

验证:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. </body>
  9. <script>
  10. function test(arg1) {
  11. return 'test1:'+arg;
  12. }
  13. function test(arg1,arg2,arg3) {
  14. return 'test2:'+arg1+arg2+arg3;
  15. }
  16. function test(arg1,arg2) {
  17. return 'test3:'+arg1+arg2;
  18. }
  19. console.log("test('你','好','世界'):"+test('你','好','世界'));
  20. console.log("test(10086):"+test(10086));
  21. console.log("test('你好世界'):"+test('你好世界'));
  22. </script>
  23. </html>

控制台结果:

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

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

和方法调用的顺序有关?

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. </body>
  9. <script>
  10. function test(arg1) {
  11. return 'test1:'+arg;
  12. }
  13. console.log("test('你','好','世界'):"+test('你','好','世界'));
  14. function test(arg1,arg2) {
  15. return 'test3:'+arg1+arg2;
  16. }
  17. console.log("test('你好世界'):"+test('你好世界'));
  18. function test(arg1,arg2,arg3) {
  19. return 'test2:'+arg1+arg2+arg3;
  20. }
  21. console.log("test(10086):"+test(10086));
  22. </script>
  23. </html>

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

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/63517
推荐阅读
相关标签
  

闽ICP备14008679号