Ale*_* K. 1 javascript equality
在David Flanagan的Javascript指南中,有一个声明:
==运算符永远不会尝试将其操作数转换为布尔值
所以我在这里做了一点测试:
var a = false;
var b = ""; // empty string
a == b; //returns true
Run Code Online (Sandbox Code Playgroud)
看一下抽象等式比较算法有一点:
即 如果Type(x)是布尔值,如果x和y都为true或两者都为false,则返回true.否则,返回false.
如果y是字符串数据类型(没有转换),x和y如何都是真的?
引擎盖下发生了什么
如果
Type(x)是Boolean,则返回比较结果ToNumber(x) == y.
Number(false) == ""
Run Code Online (Sandbox Code Playgroud)
其次是
如果
Type(x)是Number和Type(y)是String,返回比较的结果x == ToNumber(y).
Number(false) == Number("") -> 0 == 0
Run Code Online (Sandbox Code Playgroud)
如果y是字符串数据类型(没有转换),x和y如何都是真的?
它们不是两者true,但在类型强制之后它们的价值是相等的.
==运算符永远不会尝试将其操作数转换为布尔值
这是正确的,如果你检查比较算法,你会发现类型永远不会被隐式地转换为Boolean.
参考文献:
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |