class Scope implements IScope { public readonly variables: EmptyObj = Object.create(null); constructor( private readonly scopeType: ScopeType, private parent: Scope = null, public readonly shared = false, ) { } }
我们构造一个类来模拟 scope。可以看到,Scope 类包含了以下4个属性:
variables:当前环境下存在的变量
scopeType:当前环境的type
parent:当前环境的父环境
shared:有些时候不需要重复构造子环境,故用此标识
接下来我们看下该如何在环境中声明变量
首先构造一个类来模拟变量