[英]javascript, passing parameters to a callback inside a closure that is inside a function
[英]Parameters inside callback function in Javascript
讓我們考慮一下Javascript的每個方法:
var friends = ["Mike", "Stacy", "Andy", "Rick"];
friends.forEach(function (eachName, index){
console.log(index + 1 + ". " + eachName);
});
有人可以解釋paraName eachName和index來自何處,因為它們沒有在代碼中的任何地方定義。
我理解這對許多人來說可能很明顯,但我無法理解這個概念。
您應該閱讀forEach的文檔。 在forEach中聲明的函數將為數組中的每個元素調用。 forEach將使用數組項的值作為第一個函數參數調用內部函數,並將數組的索引作為第二個函數參數調用。
所以forEach將迭代數組,類似於for循環,對於數組中的每個項,它將獲取值和索引並將其傳遞給聲明的函數。
您的困惑很可能來自參數名稱,但這些名稱可以是任何名稱。 第一個參數將始終是當前項數組值,第二個參數將是索引。
要編寫自己的函數,您將創建一個調用已定義函數的for循環。
如果我們查看您的原始代碼並取出該功能(這對測試BTW很有幫助)。
var friends = ["Mike", "Stacy", "Andy", "Rick"];
function doStuff(eachName, index){
console.log(index + 1 + ". " + eachName);
}
// Does is still the same as yours
friends.forEach(doStuff);
// This loop does exactly what a forEach polyfill would do
for(var i = 0; i < friends.length; i++) {
doStuff(a[i], i);
}
看一下MDN foreach polyfill的完整示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.