这是来自Crockford的JavaScript:The Good Parts的代码.
var results = [];
var walkDOM = function (node,func) {
func(node); //What does this do?
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
Run Code Online (Sandbox Code Playgroud)
我理解代码除外func(node).我想重点是node在函数中作为参数传递func,但浏览器将如何理解它?node并且func可以是任何东西 - 因此当调用该函数时,它可以像这样读取:
walkDOM(document.body,function(att) {
node.getAttribute(att);
results.push(node);
});
Run Code Online (Sandbox Code Playgroud)
如果func获得通过,walkDOM将处理功能(ATT){...}(document.body的) -这将没有任何意义.那么为什么Crockford选择包含func(node)?