[英]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.