AMY*_*AMY 6 javascript comparison casting operators
我一般不喜欢使用==但今天我只是尝试使用以下代码,包括==,结果对我来说有点混乱.有人可以解释一下发生了什么吗?
所有这些都是虚假的价值观:
'', 0, false, undefined, null
Run Code Online (Sandbox Code Playgroud)
假设我做了:
if (undefined == null) {
alert('a');
} else {
alert('b');
}
Run Code Online (Sandbox Code Playgroud)
以下陈述适用:
null == undefined
0 == ''
false == ''
0 == false
Run Code Online (Sandbox Code Playgroud)
但为什么下面的代码返回false?
undefined == 0
undefined == ''
null == 0
Run Code Online (Sandbox Code Playgroud)
操作==员不仅仅检查事物是否是假的,还检查事物是否是假的。它遵循一个称为“抽象相等比较算法”的过程,可以在此处查看:ECMAScript 规范。
undefined == 0和undefined == '':
根据规范,undefined仅将 true 与undefinedor进行比较null。由于两者都不是0或''不是这些值中的任何一个,因此它返回 false。
null == 0
根据规范,null仅与另一个null或与true 进行比较undefined- 这里的情况都不是。
使用===
通常,最好使用===并进行您实际想要的比较,而不是信任算法==,而且通常也更快。正如您所看到的,当算法没有按照您的预期进行操作时,很容易被发现,而且明确说明通常比跟踪比较算法将采用哪条路径更简单。
有关 javascript 中“相同性”的一般信息,请参阅此 MDN 页面。
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |