gpt4 book ai didi

javascript - 了解 ECMAScript 的 ReturnIfAbrupt(AbstractOperation())

转载 作者:行者123 更新时间:2023-11-30 11:14:20 25 4
gpt4 key购买 nike

我知道有一些关于这个的帖子,但我还没有找到一个很好的解释来解释什么是 ReturnIfAbrupt(AbstractOperation())语句的计算结果为 AbstractOperation()不是 abrupt completion

According to ECMAScript ReturnIfAbrupt(AbstractOperation()) means:

  1. Let hygienicTemp be AbstractOperation().
  2. If hygienicTemp is an abrupt completion, return hygienicTemp.
  3. Else if hygienicTemp is a Completion Record, set hygienicTemp to hygienicTemp.[[Value]].

Where hygienicTemp is ephemeral and visible only in the steps pertaining to ReturnIfAbrupt.

[[Construct]] 中的最后一行操作举例:

  1. 那一行是Return ? envRec.GetThisBinding()
  2. 这是equivalent to : Return ReturnIfAbrupt(envRec.GetThisBinding())
  3. 假设GetThisBinding()不会抛出 Error (即没有突然完成),我不知道实际返回了什么
  4. 引用ReturnIfAbrupt上面的定义具体说 hygenicTemp仅涉及定义本身的步骤。它没有提示整个表达式的计算结果

最佳答案

您引用的位是针对使用值的情况。但是您的 [[Construct]] 示例正在使用该值。

为此,您需要向下滚动一点:

Algorithms steps that say or are otherwise equivalent to:

  1. Let result be AbstractOperation(ReturnIfAbrupt(argument)).

mean the same thing as:

  1. If argument is an abrupt completion, return argument.

  2. If argument is a Completion Record, set argument to argument.[[Value]].

  3. Let result be AbstractOperation(argument).

那么 Return 呢? envRec.GetThisBinding(),当 envRec.GetThisBinding() 没有返回突然完成时,[[Construct]] 中的那一行返回 [[Value]] 来自 envRec.GetThisBinding() 的非突然完成记录(this 值)。

关于javascript - 了解 ECMAScript 的 ReturnIfAbrupt(AbstractOperation()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52253698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com