6.2.3.2 输出值(V,W)

  1. ReturnIfAbrupt(V)。

  2. ReturnIfAbrupt(W)。

  3. 如果 Type(V) 不是 Reference,则抛出一个 ReferenceError 错误。

  4. 使 base 变为 GetBase(V)。

  5. 如果 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)。

results matching ""

    No results matching ""