评论者:mikethompson
为了明确起见
1. 当我们的调试器在断点处时,
2. 用户可以在 repl 中输入一个表达式
3. 作为回应,我们的调试器必须将用户输入的表达式编译为 JavaScript(然后执行,并显示结果)
4. 考虑到任何局部绑定。<---- 这是关键点。
为了满足第 4 点,我们的工具从当前的调用框架中提取所有 '局部变量',然后将所有这些局部绑定提供给 env/locals,这样编译器就不会在它们前面添加命名空间。
例如,如果在调用栈中存在对 'x' 的局部绑定,并且用户的重新输入的表达式涉及到 'x',那么我们希望编译器让符号 'x' 保持原样,不要在其前面添加任何命名空间。在最终的javascript代码中,它必须仍然是 'x',而不是 'some.namespace.x'。
我们实现这个方法是在编译时将 'x' 放入 env/locals 中——这都工作得很好。但是,随着最近的变化,这已经变成了一个更大的挑战。因此,这个工单请求提供一种传递 env 的方法。