Explain the MUL() function in JavaScript


In this tutorial, we will learn to implement MUL() function in JavaScript. This function is a very small kind of multiplication function. Basically, we use the concept of nested functions to implement MUL( ) function. Nested functions are used for creating closures and decorators. And we can achieve privacy using nested functions.

There are two ways to implement MUL() function using nested functions −

  • Using nested function with name

  • By currying a function

Using nested Function With Name

In JavaScript, we can use nested functions to get the multiplication result. We need to write n nested functions to multiply n numbers.

JavaScript is a First-class function language. It means functions in JavaScript can be treated like any other variable. So, here we return the inner function in the return statement of the outer function.

Syntax

Users can follow the below syntax to implement MUL( ) function using nested functions with name.

function mul(num1){
   function mul1(num2){
      function mul2(num3){
         return num1*num2*num3;
         
      }; // end of mul2()
      return mul2;
      
   }; // end of mul1()
   return mul1;
   
} // end of mul()

For example, we multiply three numbers – num1, num2, and num3. A function is a keyword to define function in JavaScript. Here, we are defining a function with the name mul( ), which has num1 as the parameter. Inside the mul( ) function, we return function mul1( ), which is defined inside mul( ) function. mul1( ) has num2 as parameter, it returns function mul2( ). And mul2( ) has num3 as the parameter; it returns the product of num1, num2, and num3.

This way, we can write n number of functions to multiply n numbers.

Algorithm

  • Step 1 − Define function mul( ) with the first number num1 as a parameter.

  • Step 1.1 − Inside function mul( ), define function mul1( ) with the second number num2 as a parameter.

  • Step 1.2 − In the return statement of function mul( ), return mul1.

  • Step 2 − Inside function mul1( ), define function mul2( ) with third number num3 as parameter.

  • Step 2.1 − In the return statement of function mul1( ), return mul2.

  • Step 3 − In the return statement of function mul2( ), return a product of num1, num2, and num3

Example

In the below example, we are multiplying three numbers. And we are also observing the output when we have passed only two numbers.

<html>
<body>
<h2> The MUL() function in JavaScript </h2>
<div id = "output"> </div>
   <script>
      let output = document.getElementById("output");
      function mul(num1){
         function mul1(num2){
            function mul2(num3){
               return num1*num2*num3;
               
            }; // end of mul2()
            return mul2;
            
         }; // end of mul1()
         return mul1;
         
      } // end of mul()
      output.innerHTML = "Multiplication of 2, 3 and 4 is : ";
      output.innerHTML += mul(2)(3)(4) + "<br><br>";
      output.innerHTML += "Multiplication of 4 and 6 is : ";
      
      //This line returns a function
      output.innerHTML += mul(4)(6) + "<br><br>";
      output.innerHTML += "Multiplication of 3, 5 and 7 is: ";
      
      //Another way of multiplication
      const temp = mul(3)(5);
      output.innerHTML += temp(7);
   </script>
</body>
</html>

In the above code, users see that 2, 3, and 4 are multiplied by passing them together in the function call. When we pass only two numbers, it returns a function. Then we pass 3 and 5 in a function call, but we store the result in the temp variable. And using that temp variable, we are passing 7. So, we get a product of 3, 5, and 7 = 105.

Note − We cannot call mul1() or mul2() function outside mul() function.

By Currying a Function

We can write the above logic in another way by currying a function. Currying is useful when we cannot simultaneously supply all arguments to a function. Functions that will not be called anywhere, can be written as an anonymous function.

Syntax

Follow the below syntax to implement MUL( ) by currying a function.

function mul(num1) {
   return function(num2) {
      return function(num3) {
         return num1 * num2 * num3;
      };
   };
}

Here also, we have taken the example of 3 numbers, so the user can observe the difference that we can implement the above logic by writing an anonymous function. Outermost function mul() has parameter num1; it returns a function with a parameter num2. This function returns a function with parameter num3. And innermost function returns a product of num1, num2, and num3.

The same logic can be applied for more numbers.

Algorithm

  • Step 1 − Define function mul( ) with num1 as a parameter.

  • Step 2 − In the return statement of function mul( ), define the anonymous function (let's say 1st anonymous function for understanding) with num2 as a parameter.

  • Step 3 − In the return statement of 1st anonymous function, define 2nd anonymous function with num3 as a parameter.

  • Step 4 − In the return statement of the 2nd anonymous function, return a product of num1, num2, and num3.

Example

In the below example, we are implementing MUL( ) function by currying a function.

<html>
<body>
<h2> The MUL() function in JavaScript </h2>
<div id="output"> </div>
   <script>
      let output = document.getElementById("output");
      function mul(num1) {
         return function(num2) {
            return function(num3) {
               return num1 * num2 * num3;
            };
         };
      }
      output.innerHTML = "Multiplication of 2, 4 and 6 is: ";
      output.innerHTML += mul(2)(4)(6) + "<br><br>";
      output.innerHTML += "Output when we pass only 9 is: <br>";
      
      //This line returns a function
      output.innerHTML += mul(9) + "<br><br>";
      output.innerHTML += "Multiplication of 2, 3 and 5 is: ";
      
      //Another way of multiplication
      const temp = mul(2)(3);
      output.innerHTML += temp(5);
   </script>
</body>
</html>

In the above output, users can see that when we pass three numbers in function call, we get the product of 3 numbers. We are getting 48 when we are passing 2, 4, and 6 together in the function call. When we pass only 9, we get function. Then we pass 2 and 3 only in a function call and store the result in the temp variable. And using that temp variable, we are passing 5. So, we get the product of 2, 3, and 5 = 30.

We have learned the implementation of the MUL( ) function with two different methods: nested functions and currying a function.

Updated on: 17-Mar-2023

426 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements