【问题标题】:Ecmascript Abstract Equality ComparisonEcmascript 抽象等式比较
【发布时间】:2019-02-07 00:40:16
【问题描述】:

“抽象相等比较”(==) 的 ECMAScript 规范在 6.0 和 9.0 版本之间发生了变化,在比较的某些组件中的 ToNumber 调用前面添加了一个 ! 字符。有人能告诉我为什么 ECMAScript 将它添加到规范中吗?太混乱了。

这是 6.0 的规范版本: 以下是 9.0 中规范的变化: 是什么推动了这种变化?什么意思?

【问题讨论】:

  • 有两张图片可以描述我的问题,请查找。
  • 你为什么要拍文字的照片?
  • em...,对不起,我对使用stackoverflow不太熟悉。
  • 你可以复制文本并粘贴到这里吗?
  • @Amy 在这种情况下,截屏并通过绘制箭头突出显示差异可能比尝试将规范文档转录为 Markdown 更好、更容易。不过,屏幕截图应该附有相应规范部分的超链接。

标签: javascript ecmascript-next


【解决方案1】:

Notational Conventions,特别是ReturnIfAbrupt Shorthands

同理,前缀!用于表示后面的调用 抽象或语法导向的操作永远不会返回 突然完成以及由此产生的完成记录的 [[Value]] 应该使用字段来代替操作的返回值。 例如步骤:

  1. val 成为! OperationName()

相当于以下步骤:

  1. val 成为OperationName()
  2. 断言:val 绝不是突然完成。
  3. 如果val 是完成记录,请将val 设置为val.[[Value]]。

运行时语义的语法导向操作利用了这个 通过在调用操作之前放置 !? 来进行速记:

  1. 执行! NonTerminal 的 SyntaxDirectedOperation。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2017-05-12
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多