[英]Javascript Understanding functions
我無法理解下面的代碼。 我來自Java背景。 我該怎么看? 有沒有什么好的Java> Javascript書籍/教程我應該看看?
function sum(numbers) {
var total = 0;
forEach(numbers, function (number) {
total += number;
});
return total;
}
show(sum([1, 10, 100]));
摘自http://eloquentjavascript.net/chapter6.html
我正在查看forEach(數字,函數(數字)...代碼。匿名函數從何處獲取'數字'?
看看forEach
的來源:
function forEach(array, action) {
for (var i = 0; i < array.length; i++)
action(array[i]);
}
forEach
接受兩個參數:數組和回調 (即函數)。 您可以看到它在循環中調用回調,每次都將“當前”數組元素作為參數傳遞給它。 這就是回調的形式參數number
。
換句話說 - 你可以很容易地理解這一點:
function hello(what) {
alert("Hello " + what);
}
hello("world");
如果您使用hello
作為回調,則會得到與您顯示的代碼非常相似的代碼:
function say(callback, what) {
callback(what);
}
say(hello, "world");
看到它在行動 。
最后,您可能會受益於檢查回調如何工作以及它們的用途; 這是我在這個問題上的另一個答案。
它從數字中獲取數字。 foreach所說的是,對於數字中的每個元素,使用該元素調用匿名函數。 然后該元素被稱為數字,但它可以被稱為任何東西。
你被混淆的是你沒有看到forEach的底層機制...如果你打開它你會看到該函數需要一個匿名函數作為它的第二個參數,並且它將通過任何它需要進入IT。 所以你可以期望在運行你的函數時填充parm。 當你用不同的語言來表達它時,它肯定是不和諧的,但你必須相信事物的運作方式與它們的工作方式相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.