gpt4 book ai didi

javascript - 获取另一个函数调用的所有函数的列表

转载 作者:数据小太阳 更新时间:2023-10-29 05:01:27 24 4
gpt4 key购买 nike

在 JavaScript 中,是否可以获取由另一个函数调用的所有函数的列表?我想创建一个函数依赖树,以分析脚本中的函数如何相互关联(以及哪些函数需要哪些其他函数)。

例如:

getAllCalledFunctions(funcA); //this should return [funcB, funcC, funcD], since these are the functions that are required by funcA.

function getAllCalledFunctions(functionName){
//how should I implement this?
}

function funcA(){
funcB();
funcC();
}

function funcB(){
funcD();
}

function funcC(){
funcD();
}

function funcD(){
console.log("This function is called by funcC and funcD");
}

最佳答案

Esprima可能会帮助你。它是一个 Javascript 解析器,可以帮助您进行静态代码分析。

这是一个简单的例子(http://jsfiddle.net/fyBvT/):

var code = 'function funcA() { funcB(); funcC(); } function funcB(){ funcD(); } function funcC() { funcD(); } function funcD(){ console.log("This function is called by funcC and funcD"); }';
var syntax = esprima.parse(code);

var funcs = [];
_.each(syntax.body, function(i) {
if (i.type == 'FunctionDeclaration') {
var func = {name: i.id.name};

_.each(i.body.body, function(j) {
if (j.type == 'ExpressionStatement' && j.expression.type == 'CallExpression') {
func.calls = func.calls || [];
func.calls.push(j.expression.callee.name);
}
});

funcs.push(func);
}
});

console.log(funcs);

显然,这需要很多帮助才能提供很大的值(value),但它可能会让您了解什么是可能的以及从哪里开始。

关于javascript - 获取另一个函数调用的所有函数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com