Function overloading in Javascript - Best practices

后端 未结 30 2163
难免孤独
难免孤独 2020-11-22 03:33

What is the best way(s) to fake function overloading in Javascript?

I know it is not possible to overload functions in Javascript as in other languages. If I neede

30条回答
  •  难免孤独
    2020-11-22 04:16

    While Default parameters is not overloading, it might solve some of the issues that developers face in this area. The input is strictly decided by the order, you can not re-order as you wish as in classical overloading:

    function transformer(
        firstNumber = 1,
        secondNumber = new Date().getFullYear(),
        transform = function multiply(firstNumber, secondNumber) {
            return firstNumber * secondNumber;
        }
    ) {
        return transform(firstNumber, secondNumber);
    }
    
    console.info(transformer());
    console.info(transformer(8));
    console.info(transformer(2, 6));
    console.info(transformer(undefined, 65));
    
    function add(firstNumber, secondNumber) {
        return firstNumber + secondNumber;
    }
    console.info(transformer(undefined, undefined, add));
    console.info(transformer(3, undefined, add));
    

    Results in (for year 2020):

    2020
    16160
    12
    65
    2021
    2023
    

    More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters

提交回复
热议问题