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

时间:2015-05-20 14:01:09

标签: javascript node.js recursion

我需要导出一个递归函数。是否可以从函数中引用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 ?
    });
  }
}

1 个答案:

答案 0 :(得分: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);
    });
  }
}