我试图得到一个表达式来测试一个字段是否为null并且处理为false
a=true
b=true
-------------
true
a=null
b=true
-------------
true
Run Code Online (Sandbox Code Playgroud)
但是当我执行时:
var a=true;
var b=true;
alert((a+b) == true); => false
Run Code Online (Sandbox Code Playgroud)
它返回false,我不明白.
var a=null;
var b=true;
alert((a+b) == true); => true
Run Code Online (Sandbox Code Playgroud)
javascript中的一般解决方案是使用!!解析为布尔值.!!两次否定真实性,产生一个与原始真实性相同的布尔值.
然后,您应该将其&&用作逻辑and操作.
var a=null;
var b=true;
console.log(!!a && !!b); // false
Run Code Online (Sandbox Code Playgroud)
+行为的附录你在使用时所看到的奇怪+之处&&是因为,在JavaScript中,将+布尔与整数,以及true成为1和false变成强迫0.
于是
true + true \\ 2
true + false \\ 1
Run Code Online (Sandbox Code Playgroud)
然后在做的时候
true + true == true
Run Code Online (Sandbox Code Playgroud)
在相等比较的左侧解析为2,然后JavaScript强制右侧1,因此相等检查失败.
做的时候
null + true == true
Run Code Online (Sandbox Code Playgroud)
左侧变为整数1,右侧变为整数.
我建议阅读关于Equality比较和相同性的MDN指南,了解有关JavaScript的值强制和抽象相等检查的更多信息.
| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |