首页 > 解决方案 > 为什么 AST 树中的 const/let VariableDeclarations 而不是 ECMAScript 中的 LexicalDeclarations?

问题描述

在 ECMAScript 中,只有 var 是“VariableDeclaration”,而 const/let 是“LexicalDeclaration”类型。

常量/让

变量

但是,我一直在学习 AST 树,并注意到 estree 和 babel 解析器都在 'Variable Declarations' 下定义了 const/let。

埃斯特里

babel 解析器

节点类型不应该对应于 ECMAScript 节点类型,还是我误解了 AST 树的构建方式?

标签: javascriptecmascript-6abstract-syntax-tree

解决方案


节点类型不应该对应于 ECMAScript 节点类型吗

AST 格式的规范完全独立于语言语法定义。通常两者最终具有相关性,但这并不是它们匹配的总体目标。

在 ESTree 的上下文中,您将使用.kind来区分各种类型,而不是使用不同的节点类型,尽管这肯定是一种替代方法。


推荐阅读