me_*_*jay 6 javascript casting if-statement
这一小部分代码花了很长时间才被注意到.
我想如果我做了以下,那就没事了
if('true' == true) {
alert("Does not happen");
}
Run Code Online (Sandbox Code Playgroud)
但它没有通过if条件.
我认为double等于==匹配值而不是类型匹配类型是作业===.
现在我的问题是为什么不检查true类型'true'或为什么检查这些操作数的类型?
'true' == true
Run Code Online (Sandbox Code Playgroud)
这就是这里发生的事情(根据规则):
- 将布尔值转换为数字(规则7):
'true' == 1
Run Code Online (Sandbox Code Playgroud)
- 将'true'转换为Number(规则5):
Number('true') == 1
Run Code Online (Sandbox Code Playgroud)
- Number('true')是NaN:
NaN == 1
Run Code Online (Sandbox Code Playgroud)
- 返回false(规则1.ci)
== 确实令人困惑,但一旦理解了规则,它就会有所帮助:
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |