下面的摘录来自MDN-Java的重新介绍,应该用来演示IIFE。我有点看到应该计算此文本节点中的字符,但是我不确定几件事。第一个是为什么for语句在第一个参数部分var i=0, child
中有2个参数。第二个更笼统,该函数如何通过自身调用..有人可以向我解释总体流程吗?
var charsInBody = (function counter(elm) {
if (elm.nodeType == 3) { // TEXT_NODE
return elm.nodeValue.length;
}
var count = 0;
for (var i = 0, child; child = elm.childNodes[i]; i++) {
count += counter(child);
}
return count;
})(document.body);
答案 0 :(得分:2)
第一个就是为什么for语句在第一个参数部分var i = 0,child中有2个参数?
for循环只是while循环的简化版本,这意味着:
for(declarations; condition; last) {
body
}
与以下相同:
declarations
while(condition) {
body
last
}
这意味着您的情况如下:
var i = 0, child;
while(child = elm.childNodes[i]) {
count += counter(child);
i++
}
实际上child
只是在循环之前定义了一个新变量