這是Crockford的JavaScript代碼:The Good Parts。遞歸下載DOM樹
var results = [];
var walkDOM = function (node,func) {
func(node); //What does this do?
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
我瞭解代碼,但func(node)
除外。我想重點是通過node
作爲函數func
中的參數,但瀏覽器如何以這種方式理解它? node
和func
可以是任何東西 - 所以,當函數被調用它可以這樣寫:
當func
傳遞,walkDOM
將處理功能(ATT){...}(document.body的) - - 這沒有任何意義。那麼爲什麼Crockford選擇包含func(節點)?
預期使用'顯影劑walkDOM'將它傳遞*預計*的函數接收DOM被稱爲參數。你的函數預計會收到一個屬性名稱,因此不合適。 – user113716
@ patrick_dw - 我還是不明白'func(node)'的符號。開發者是否應該用'function(node)'替換它?如果不是,'func(node)'對瀏覽器有意義嗎? – dopatraman
瀏覽器不需要理解它。只有編寫傳遞給'walkDOM'的函數的開發人員需要理解它。如果我想走DOM,將每個*文本節點*作爲目標,並用*「patrick dw很好看」替換它的文本*,那麼我會將該邏輯放在我傳遞的函數中。 'walkDOM'將每個節點傳遞給* your *函數(一次一個),*你的*函數負責對該節點做些什麼。 – user113716