【问题标题】:Abstract Equality Comparison - Prefix Operator抽象等式比较 - 前缀运算符
【发布时间】:2019-03-16 14:45:26
【问题描述】:

我阅读了javascript的specs,发现了这个sn-p:

7.2.14 抽象等式比较

  1. 如果 Type(x) 是布尔值,则返回比较结果! ToNumber(x) == y。

!ToNumber(x) 是什么意思?

例子:

真 == 1 等于真

但是!true == 1等于false,所以不是否定运算符。

【问题讨论】:

  • !ToNumber(x)Boolean(ToNumber(x)) !== true 相同。 !true == 1 基本上是 false == 1,其计算结果为 false
  • 但是 !1 == 1 将是 false,因为 true 将被转换为 1。表达式 true == 1 将评估为 true。
  • "但是 !1 == 1 将是 false,因为 true 将被转换为 1。"不,!1 将变为 false 然后与 1 比较

标签: javascript


【解决方案1】:

我在搜索“!”时在规范中找到了答案。

同样,前缀 !用于指示以下对抽象或语法指导操作的调用将永远不会返回突然完成,并且应使用生成的完成记录的 [[Value]] 字段代替操作的返回值。 Source

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 2013-08-12
    • 1970-01-01
    • 2010-11-05
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多