3回答

0收藏

AST能否直接对函数进行调用执行,拿到执行后的结果

问答交流 问答交流 2285 人阅读 | 3 人回复 | 2020-09-09





请问一下大佬们,AST有没有直接对函数进行调用/执行的方式,然后拿到结果,然后直接替换掉原来的地方,有这种做法吗?




比如:
var test_add = function(a, b){
    return a+b;}

var result = test_add(12, 23)



然后,目标期待AST还原后的结果如:
var result = 35



假设这种函数远比上面这个复杂的话,只需要依赖输入的参数,然后没有别的依赖参数,即可调用运行,




除了处理成:
eval("test_add(12, 23)"
还有其他法子吗?




比如,babel有api提供那种直接调用函数的方式吗,我搜了一下没找着



请教大佬们,有这种AST操作的方式吗





分享到:
回复

使用道具 举报

回答|共 3 个

startzm

发表于 2020-9-9 17:15:49 | 显示全部楼层

同求指点
回复

使用道具 举报

悦来客栈的老板

发表于 2020-9-13 10:52:53 | 显示全部楼层


肯定没有啊,不过可以自己写插件,很简单。可自动替换函数的调用。不过用了new Function,其本质和eval没啥区别。
再就是AST只是帮你解析代码,无法帮你运行代码的,鬼晓得某个时期变量的值该是什么。
回复

使用道具 举报

七仔

发表于 2020-9-13 17:52:10 | 显示全部楼层

这个new Function有点好使
回复

使用道具 举报