javascript - 为什么 AST 树中的 const/let VariableDeclarations 而不是 ECMAScript 中的 LexicalDeclarations?
问题描述
在 ECMAScript 中,只有 var 是“VariableDeclaration”,而 const/let 是“LexicalDeclaration”类型。
但是,我一直在学习 AST 树,并注意到 estree 和 babel 解析器都在 'Variable Declarations' 下定义了 const/let。
节点类型不应该对应于 ECMAScript 节点类型,还是我误解了 AST 树的构建方式?
解决方案
节点类型不应该对应于 ECMAScript 节点类型吗
AST 格式的规范完全独立于语言语法定义。通常两者最终具有相关性,但这并不是它们匹配的总体目标。
在 ESTree 的上下文中,您将使用.kind
来区分各种类型,而不是使用不同的节点类型,尽管这肯定是一种替代方法。
推荐阅读
- regex - 已解决:哪些 RegexExtract 参数可以提取具有不同长度和格式的数字
- azure-powershell - Powershell 帮助比较
- python - X 轴没有像数据框中那样正确显示
- javascript - Discord.js v12 如何将新创建的角色分配给用户?
- dart - 引用字符串的列表
- sql-server - SQL Server 删除子字符串,直到逗号或右括号
- tomcat - RESTeasy ContainerRequestFilter 部署到tomcat时不包含用户信息(容器管理身份验证)
- flutter - Flutter:我想访问 setstate 的更改值,当我访问它时它没有显示新的状态值
- android - Android - 通过 Intent 启动另一个应用程序时保持演示文稿显示
- python - 输出: [
]