了解 Crockford 的 walk_the_dom ("The Good Parts")

Understanding Crockford's walk_the_dom ("The Good Parts")

我正在努力理解下面 Crockford 的 walk_the_dom 函数。这是我的逻辑和我正在使用的 DOM 树。我看不到什么时候达到 node.nextSibling

function walk(node, func) {
    func(node);
    node = node.firstChild;
    while (node) {
        walk(node, func);
        node = node.nextSibling;
    }
};
  1. func(node) 运行 是给定节点上的一个函数。
  2. node=node.firstChild() 现在等于 document.body 的 firstChild,或者在这种情况下,H1
  3. while(node) 运行 是一个循环,其中 walk 函数 又是 运行。
  4. func(node) 现在 运行 是 H1
  5. 上的一个函数
  6. node = node.firstChild()现在等于H1的firstChild,也就是这里所说的#text案例
  7. while(node) 运行 是一个循环,其中 walk 函数 又是 运行
  8. func(node) 运行是 #text

  9. 上的函数
  10. node = node.firstChild() --> #text的第一个子节点是什么?

  11. 什么时候达到node.nextSibling

#text 的 firstChildnullundefined 因为没有。 JavaScript 具有所谓的 truthy 值。所以 while(null)while(false) 相同。