【发布时间】:2019-02-07 11:43:51
【问题描述】:
下面的 sn-p 来自 MDN - 对 Javascript 的重新介绍,它应该演示 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);
【问题讨论】:
-
逗号分隔的标识符
i和child是var语句的参数。它只是声明和初始化i,同时只声明child。不幸的是,你的问题的第二部分肯定是重复的,所以你应该通过在 Stack Overflow 上搜索其他 IIFE 和递归问题来完成你的工作。
标签: javascript dom recursion iife