gpt4 book ai didi

Javascript 相等运算符

转载 作者:行者123 更新时间:2023-11-30 07:59:29 26 4
gpt4 key购买 nike

在 David Flanagan 的 Javascript 指南中,有这样一句话:

the == operator never attempts to convert its operands to boolean

所以在这里我做了一个小测试:

var a = false;
var b = ""; // empty string
a == b; //returns true

查看Abstract Equality Comparison Algorithm有一点:

e. If Type(x) is Boolean, return true if x and y are both true or both false. Otherwise, return false.

如果 y 是字符串数据类型(无需转换),x 和 y 如何同时为真?

最佳答案

引擎盖下发生的事情是

If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.

Number(false) == ""

其次是

If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).

Number(false) == Number("") -> 0 == 0

How can x and y be both true if y is string data type (without conversion)?

它们并非都是 true,但在类型强制转换后它们的值是相等的。

the == operator never attempts to convert its operands to boolean

这是正确的,如果您检查比较算法,您会发现类型永远不会隐式转换为 Boolean

引用资料:

关于Javascript 相等运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888631/

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