繁体   English   中英

JavaScript地图阴影

[英]JavaScript Map shadowing

对于任何一种语言,用JavaScript编写解析器显然都使用Map来存储名称到变量的映射。

大多数语言以某种方式允许内部范围内的另一个变量遮蔽外部范围内的变量。 实现此目标的理想数据结构是功能图。 在没有这种情况的情况下,似乎有两种选择。

  1. 将Map当作功能图一样对待,创建外部图的副本,将内部变量添加到副本中,并在内部范围结束时对其进行垃圾回收。 这很优雅,但是每次都花O(N)时间复制现有变量,因此如果在给定点上存在许多变量,则可能会很慢。

  2. 使用完整的命令式样式,只需使用一个映射,保存旧的绑定并在内部作用域的末尾将其还原。 这是快速的,但是比较简单且容易出错。

有什么更好的选择吗? 是否有最佳选择的共识?

使用Map对象的链接列表来表示作用域 如果在第一个链接中找不到标识符,则递归遍历其余部分,直到全局作用域为止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM