2015-05-20 6 views
2

Мне нужно экспортировать рекурсивную функцию. Можно ли ссылаться на объект 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 ? 
    }); 
    } 
} 

ответ

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); 
    }); 
    } 
} 
Смежные вопросы