美文网首页
JS如何实现“函数重载”

JS如何实现“函数重载”

作者: 学的会的前端 | 来源:发表于2019-01-17 16:53 被阅读0次

    函数的重载

    在强类型语言中,可以为一个函数编写两个定义,只要这两个定义的签名(接受的参数的类型和数量)不同即可,即可实现函数的重载

    JS中没有函数的重载

    • 原因: ECMAScript函数没有签名,因为其参数是由包含零或多个值的数组来表示的。没有函数签名,真正的重载就不可能实现。
    • 同名函数:如果定义了两个名字相同的函数,那么后面定义的函数会覆盖前面定义的函数。
    function addSomeNumber(num){
        console.log (num + 100);
    }
    function addSomeNumber(num){
        console.log(num + 200);
    }
    addSomeNumber(100);
    //console.log 的值是300
    
    1. 由于后定义的函数覆盖了先定义的函数,因此当在最后一行代码中调用这个函数时,console.log的结果就是300.
    2. 也可以这样理解
    var addSomeNumber = function (num) {
      console.log (num + 100);
    }
    var addSomeNumber = function (num) {
      console.log (num + 200);
    }
    var result = addSomeNumber(100);  // 300
    

    在创建第二个函数时,实际上覆盖了引用第一个函数的变量addSomeNumber

    实现类重载的方法:

    通过查看传入函数中参数的类型和数量并作出不同的反应,模拟方法的重载。

    function printPeopleInfo(name, age, sex){
        if(name){
          console.log(name);
        }
        if(age){
          console.log(age);
        }
    
        if(sex){
          console.log(sex);
        }
      }
      printPeopleInfo('Byron', 26);
      printPeopleInfo('Byron', 26, 'male'); 
    
    1.png

    相关文章

      网友评论

          本文标题:JS如何实现“函数重载”

          本文链接:https://www.haomeiwen.com/subject/lhwidqtx.html