【问题标题】: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 来区分各种类型,而不是使用不同的节点类型,尽管这肯定是一种替代方法。

【讨论】:

  • +1,你是权威来源:-)
猜你喜欢
  • 2022-11-21
  • 2014-04-14
  • 2020-03-10
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
相关资源
最近更新 更多