6.2.3.2 输出值(V,W)
ReturnIfAbrupt(V)。
ReturnIfAbrupt(W)。
如果 Type(V) 不是 Reference,则抛出一个 ReferenceError 错误。
使 base 变为 GetBase(V)。
如果 IsUnresolvableReference(V) 为 true,那么
a. 如果 IsStrictReference(V) 为 true,,那么
i. 抛出一个 ReferenceError 错误。
b. 使 globalObj 变为 GetGlobalObject()。
c. 返回 ?Set(globalObj, GetReferencedName(V), W, false)。
6. 否则 IsPropertyReference(V) 为 true,那么
a. 如果 HasPrimitiveBase(V) 为 true, 那么
i. 断言:在这种情况下, base 将永远不为 undefined 或 null。
ii. 设置 base 为 !ToObject(base)。
b. 使 succeeded 变为 ?base.[[Set]](GetReferencedName(V), W, GetThisValue(V))。
c. 如果 succeeded 为 false 并且 IsStrictReference(V) 为 true,抛出一个 TypeError 错误。
d. 返回。
7. 否则 base 必须为一个 Environment Record,
a. 返回 ?base.SetMutableBinding(GetReferencedName(V), W, IsStrictReference(V)) (见 8.1.1)。