解释 JavaScript 中的 MUL() 函数
在本教程中,我们将学习在 JavaScript 中实现 MUL() 函数。此函数是一种非常小的乘法函数。基本上,我们使用嵌套函数的概念来实现 MUL( ) 函数。嵌套函数用于创建闭包和装饰器。我们可以使用嵌套函数实现隐私。
使用嵌套函数实现 MUL() 函数有两种方法 -
使用带名称的嵌套函数
通过柯里化函数
使用带名称的嵌套函数
在 JavaScript 中,我们可以使用嵌套函数来获取乘法结果。我们需要编写 n 个嵌套函数来乘以 n 个数字。
JavaScript 是一种一流的函数语言。这意味着 JavaScript 中的函数可以像任何其他变量一样处理。因此,我们在外部函数的返回语句中返回内部函数。
语法
用户可以按照以下语法使用带名称的嵌套函数来实现 MUL( ) 函数。
function mul(num1){ function mul1(num2){ function mul2(num3){ return num1*num2*num3; }; // end of mul2() return mul2; }; // end of mul1() return mul1; } // mul() 结束
例如,我们将三个数字相乘 - num1、num2 和 num3。函数是 JavaScript 中定义函数的关键字。在这里,我们定义一个名为 mul( ) 的函数,该函数以 num1 为参数。在 mul( ) 函数内部,我们返回函数 mul1( ),该函数在 mul( ) 函数内部定义。mul1( ) 以 num2 为参数,它返回函数 mul2( )。而 mul2( ) 以 num3 为参数;它返回 num1、num2 和 num3 的乘积。
这样,我们可以编写 n 个函数来将 n 个数字相乘。
算法
步骤 1 - 定义函数 mul( ),以第一个数字 num1 作为参数。
步骤 1.1 - 在函数 mul( ) 中,定义函数 mul1( ),以第二个数字 num2 作为参数。
步骤 1.2 - 在函数 mul( ) 的 return 语句中,返回 mul1。
步骤 2 - 在函数 mul1( ) 中,定义函数 mul2( ),以第三个数字 num3 作为参数。
步骤2.1 − 在函数 mul1( ) 的返回语句中,返回 mul2。
步骤 3 − 在函数 mul2( ) 的返回语句中,返回 num1、num2 和 num3 的乘积
示例
在下面的示例中,我们将三个数字相乘。并且,当我们仅传递两个数字时,我们也在观察输出。
<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>
在上面的代码中,用户看到 2、3 和 4 通过在函数调用中一起传递而相乘。当我们只传递两个数字时,它会返回一个函数。然后我们在函数调用中传递 3 和 5,但我们将结果存储在临时变量中。并且使用该临时变量,我们传递 7。因此,我们得到 3、5 和 7 的乘积 = 105。
注意 - 我们不能在 mul() 函数之外调用 mul1() 或 mul2() 函数。
通过柯里化函数
我们可以通过柯里化函数以另一种方式编写上述逻辑。当我们无法同时向函数提供所有参数时,柯里化很有用。不会在任何地方调用的函数可以写成匿名函数。
语法
按照以下语法通过柯里化函数来实现 MUL()。
function mul(num1) { return function(num2) { return function(num3) { return num1 * num2 * num3; }; }; }
这里我们同样以 3 个数字为例,以便用户能够观察到我们可以通过编写匿名函数来实现上述逻辑的不同之处。最外层函数 mul() 具有参数 num1;它返回一个具有参数 num2 的函数。此函数返回一个具有参数 num3 的函数。最内层函数返回 num1、num2 和 num3 的乘积。
同样的逻辑可以应用于更多数字。
算法
步骤 1 - 定义函数 mul( ),以 num1 为参数。
步骤 2 - 在函数 mul( ) 的返回语句中,定义匿名函数(为了便于理解,我们称之为第一个匿名函数),以 num2 为参数。
步骤 3 - 在第一个匿名函数的返回语句中,定义第二个匿名函数,以 num3 为参数。
步骤 4 - 在第二个匿名函数的返回语句中,返回 num1、num2 和num3。
示例
在下面的例子中,我们通过柯里化函数来实现 MUL( ) 函数。
<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>
在上面的输出中,用户可以看到,当我们在函数调用中传递三个数字时,我们得到了 3 个数字的乘积。当我们在函数调用中同时传递 2、4 和 6 时,我们得到了 48。当我们只传递 9 时,我们得到了函数。然后我们在函数调用中只传递 2 和 3,并将结果存储在临时变量中。并且使用该临时变量,我们传递 5。因此,我们得到了 2、3 和 5 的乘积 = 30。
我们已经学习了使用两种不同方法实现 MUL( ) 函数:嵌套函数和柯里化函数。