【问题标题】:Why are const/let VariableDeclarations in AST trees and not LexicalDeclarations like in ECMAScript?为什么 AST 树中的 const/let VariableDeclarations 而不是 ECMAScript 中的 LexicalDeclarations?
【发布时间】:2018-08-01 19:24:01
【问题描述】:
在 ECMAScript 中,只有 var 是“VariableDeclaration”类型,而 const/let 是“LexicalDeclaration”类型。
const/let
var
但是,我一直在学习 AST 树,并注意到 estree 和 babel 解析器都在“变量声明”下定义了 const/let。
estree
babel-parser
节点类型不应该对应于 ECMAScript 节点类型还是我误解了 AST 树的构建方式?
【问题讨论】:
标签:
javascript
ecmascript-6
abstract-syntax-tree
【解决方案1】:
节点类型是否应该与 ECMAScript 节点类型对应
AST 格式的规范完全独立于语言语法定义。通常两者最终具有相关性,但这并不是它们匹配的总体目标。
在 ESTree 的上下文中,您可以使用 .kind 来区分各种类型,而不是使用不同的节点类型,尽管这肯定是一种替代方法。