代码之家  ›  专栏  ›  技术社区  ›  Muhammad Umer

解释当两种类型不相等时JavaScript如何隐式转换类型[[副本]

  •  -1
  • Muhammad Umer  · 技术社区  · 6 年前

    运算符的右侧是否强制转换为左侧的类型?

    number == string -> number == number

    boolean == string -> number == number

    每个操作员都有不同的规则吗 *-/+||&&% ??

    我看过其他问题/答案,它们不清楚,令人困惑。

    4 回复  |  直到 6 年前
        1
  •  2
  •   RobG    6 年前

    规则在 Abstract Equality Comparison algorithm

    运算符的右侧是否强制转换为左侧的类型?

    number == string -> number == number
    

    Type(x) 是数字和 Type(y) x == ToNumber(y) .

    双方是否都转换为相同的基础类型,如数字?

    boolean == string -> number == number
    

    类型(x) ToNumber(x) == y .

    它给出了不同的类型(数字和字符串),因此转到步骤4: number == ToNumber(y) .

    又是这样。

    其他操作符可能会强制计算表达式的结果,所以我猜“是”。阅读本书的相关部分 ECMA-262#expressions .

        2
  •  0
  •   Muhammad Umer    6 年前

    当比较中涉及类型转换(即非严格比较)时,JavaScript将类型转换为String、Number、Boolean或Object操作数,如下所示:

    • 数值。JavaScript尝试将字符串转换为数字 将文本转换为数字类型值。首先,数学值是

    • 如果其中一个操作数是布尔操作数,则转换布尔操作数 如果为真则为1,如果为假则为+0。

    • 返回对象的默认值。操作员试图 将对象转换为基元值、字符串或数值, 使用对象的valueOf和toString方法。

    • 生成。请注意,对象被转换为基本体if,and 只有当,它的比较词是原语。如果两个操作数都是对象, 它们作为对象进行比较,只有当两者都引用同一个对象时,相等性测试才是正确的。

        3
  •  0
  •   jatin khattar    6 年前

    == 在进行比较之前,将操作数转换为相同类型。

    为了 关系抽象比较 (例如,<=),在比较之前,首先将操作数转换为基本体,然后转换为同一类型。

    字符串是基于标准的字典顺序,使用Unicode值进行比较的。

    source 为了更清楚

        4
  •  0
  •   Muhammad Umer    6 年前

    http://ecma-international.org/ecma-262/8.0/#sec-abstract-equality-comparison

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

    1. 如果类型(x)与类型(y)相同,则返回执行严格相等比较的结果x===y。

    2. 如果x为null,y未定义,则返回true。如果x未定义,y为空,则返回true。

    3. x == ToNumber(y)

    4. Number(x) == y .

    5. ToNumber(x) == y

    6. 如果类型(y)是布尔值,则返回比较结果 x==t数字(y) .

    7. 如果类型(x)是字符串、数字或符号,而类型(y)是对象,则返回比较结果 x == ToPrimitive(y) .

    8. 如果类型(x)是Object,类型(y)是String、Number或Symbol,则返回比较结果 ToPrimitive(x) == y . 返回false。

    enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here