解释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;
} // end of mul()
例如,我们将三个数字相乘- num1,num2和num3。函数是JavaScript中定义函数的关键字。在这里,我们定义了一个名为mul()的函数,该函数具有num1作为参数。在mul()函数内部,我们返回mul1()函数,该函数是在mul()函数内定义的。mul1()函数以num2作为参数,它返回mul2()函数。mul2()函数以num3作为参数,它返回num1、num2和num3的乘积。
通过这种方式,我们可以编写任意数量的函数来相乘n个数字。
步骤
- 步骤1 - 使用第一个数字num1作为参数定义mul()函数。
-
步骤1.1 - 在mul()函数内部,使用第二个数字num2定义mul1()函数。
-
步骤1.2 - 在mul()函数的返回语句中,返回mul1。
-
步骤2 - 在mul1()函数内部,使用第三个数字num3定义mul2()函数。
-
步骤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,但是我们将结果存储在temp变量中。然后使用temp变量,我们传递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 - 定义具有num1作为参数的函数mul()。
-
步骤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>
在上面的输出中,用户可以看到当我们在函数调用中传递三个数字时,我们得到了三个数字的乘积。当我们同时传递2、4和6时,在函数调用中得到了48。当我们仅传递9时,我们得到函数。然后我们只传递2和3,并将结果存储在temp变量中。然后使用这个temp变量,我们传递5。所以,我们得到了2、3和5的乘积= 30。
我们学习了使用两种不同方法实现MUL()函数:嵌套函数和柯里化函数。