TL;DR:我想做与https://github.com/nolanlawson/optimize-js相同的事情,但是esprima
当我使用estraverse
.
ESPrima 为以下代码提供相同的输出节点:
!function (){}()
和
!(function (){})()
http://esprima.org/demo/parse.html?code=!function%20()%7B%7D()%0A%0A!(function%20()%7B%7D)()
例如 - 我将遍历 AST 树。在 Function Expression ExpressionStatement 节点上,我想检查 - 如果该节点没有围绕函数的括号 - 我想添加它。
那么,我如何检测函数括号,如何添加它们?我查看令牌,但我不知道如何将平面令牌对象与具有指定 AST 节点的对象相关联。