所以我有一个看起来像这样的代码块:
stack.forEach(function(element){
//sys.puts(sys.inspect(element, false, null));
console.log('-----element start-----');
console.log(element.type + ':' + element.raw);
console.log('-----element end-----');
if(element.children){
element.children.forEach(function(childElement){
stack.push(childElement);
});
}
});
问题是这不像我想的那样,除了一个堆栈来表现,并想知道这是否与 JavaScript 本身有关。我看到的问题是,当我为每个孩子调用 stack.push 以将其添加到堆栈中进行处理时,初始 stack.forEach() 似乎没有拾取它,它只记录到顶级元素. 如果我尝试在此之后直接执行另一个 stack.forEach() ,则它会显示下一级子元素,因此我知道 .push 正在将子元素添加到堆栈中。
似乎 .forEach() 按原样抓取数据,如果它们发生在 foreach 中,则不会获得更新。JavaScript 是这样吗?有没有不同的方法可以完成同样的事情(能够处理顶级元素和它下面的所有级别的子元素)?