0
我想在每個函數定義之前添加一個語句,例如用babel遍歷新取代的節點
function a() {
var b = function c() {};
}
成爲
foo(function a() {
var b = foo(function c() {});
});
我想用下面的訪問巴別塔來實現:
var findFunctionVisitor = {
Function: function (path) {
// Traversing further leads to infinite loop as same node is found again
path.stop();
var node = path.node;
// Move every FunctionDeclaration to FunctionExpression
var newNode = t.functionExpression(
node.id,
node.params,
node.body,
node.generator,
node.async
);
path.replaceWith(
t.CallExpression(instrumentationCall, [newNode])
)
// traverse the part in newNode.body
}
};
如果我不停止路徑新插入的FunctionExpression發現另一導致無限遞歸的時間,所以停止是必要的。 我確切的問題是,我不知道如何開始遍歷newNode.body
,我需要獲取內部函數語句。