簡體   English   中英

文本中的函數示例對我來說沒有意義

[英]function example in text does not make sense to me

閱讀通俗易懂的javascript試圖將我的頭纏在函數周圍,我讀了以下示例代碼:

function makeAddFunction(amount) {
  function add(number) {
    return number + amount;
  }
  return add;
}

var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
show(addTwo(1) + addFive(1));

我了解了要點,但是經過幾個小時的檢查並仔細閱讀了隨附的文本,這對我來說還是沒有被點擊:這段代碼在做什么? add函數在哪里獲取number參數? 它來自show命令嗎? 如果是這樣,它如何傳播? 我只是看不到...

首先,我認為您的代碼片段中缺少一些代碼,因為就目前而言,show將拋出未定義的代碼。

但是,這里足以回答您的問題的核心。

1)var addTwo將值2傳遞給makeAddFunction。 這是“金額”。 addTwo返回一個值為2的add實例。

2)var addFive將值5傳遞給makeAddFunction。 這是“金額”。 addFive返回一個add實例,其值為5。

3)用數字1調用addTwo。將其添加到先前的配置值2中並返回3。

4)使用5調用addFive。這將添加到先前的配置值5中並返回6。

5)如果定義了show函數,它將添加3 + 6並顯示9。

加法函數在哪里獲取number參數?

=> number作為add的參數傳遞。 當您編寫addTwo(1) ,1將是number參數。

addTwo函數在哪里獲取數量參數?

=>這稱為閉包。 運行makeAddFunction(2) ,值2作為數量傳遞,並由add函數捕獲。

函數makeAddFunction接受一個數字( amount ),並返回一個函數,該函數將作為參數傳遞的數字添加到傳遞給外部函數的數字中。

function makeAddFunction(amount) {
   function add(number) {
     return number + amount;
   }

    return add;
}

調用var addTwo = makeAddFunction(2); 等效於編寫以下函數:

   var addTwo = function(number) {
     return number + 2;  // this function is actually returned by makeAddFunction
   }

您可以使用參數addTwo(5);來調用它addTwo(5);

這是一個小提琴: http : //jsfiddle.net/Eh4LK/1/按下運行按鈕以執行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM