节点:从声明模块中调用导出的函数

Eri*_*uth 2 javascript recursion node.js

我需要导出一个递归函数.可以exports从函数中引用对象吗?(我很担心循环参考).

exports.traverse = function(node, cb){
  if(node.hasOwnProperty("value")){
    cb(node.value);
  }else if(node.hasOwnProperty("children")){
    node.children.forEach(function(child){
      exports.traverse(child, cb);  // Err, is this ok ?
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 6

好的,它的工作原理,但有一个清洁的解决方案:

exports.traverse = function traverse(node, cb){
  if(node.hasOwnProperty("value")){
    cb(node.value);
  }else if(node.hasOwnProperty("children")){
    node.children.forEach(function(child){
      traverse(child, cb);
    });
  }
}
Run Code Online (Sandbox Code Playgroud)