解釋JavaScript中的MUL()函式
在本教程中,我們將學習如何在JavaScript中實現MUL()函式。這個函式是一個非常小的乘法函式。基本上,我們使用巢狀函式的概念來實現MUL()函式。巢狀函式用於建立閉包和裝飾器。並且我們可以使用巢狀函式來實現私有性。
有兩種方法可以使用巢狀函式來實現MUL()函式:
使用命名巢狀函式
透過柯里化函式
使用命名巢狀函式
在JavaScript中,我們可以使用巢狀函式來獲得乘法結果。我們需要編寫n個巢狀函式來乘以n個數。
JavaScript是一種一等函式語言。這意味著JavaScript中的函式可以像任何其他變數一樣對待。因此,我們在這裡在外部函式的return語句中返回內部函式。
語法
使用者可以按照以下語法使用命名巢狀函式實現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相乘。`function`是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()的return語句中,返回mul2。
步驟3 - 在函式mul2()的return語句中,返回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 - 定義函式mul(),num1作為引數。
步驟2 - 在函式mul()的return語句中,定義匿名函式(為了理解,我們稱之為第一個匿名函式), num2作為引數。
步驟3 - 在第一個匿名函式的return語句中,定義第二個匿名函式,num3作為引數。
步驟4 - 在第二個匿名函式的return語句中,返回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()函式:巢狀函式和柯里化函式。