JS的与/且操作&&结果不一致

js里我要求两个从ajax返回的boolean值的“与”
第一个返回的变量 bShowFrom是 false/0,第二个返回的变量 bShowTo 是 true/1
照理来说:false && true 或者 0&&1 是 false / 0
但是我输出的结果却是:bShowFrom && bShowTo 为 true,下图为我用alert输出的结果:

img

用 false / 0 来替换变量bShowFrom 后又正常了,见下图:

img

可我alert(bShowFrom == false或0) 出来的结果又一直是true
以上true false / 1 0 两种我是都分别试过了,都是一样的问题,但反过来 1 && 0 = 0 || true && false = 0 都是没问题的

请求帮助!

bShowFrom 的值是number类型的0吗,需要注意的是如果为string则true
-------更新
不是很明白你的意思,但我们在bShowForm为0 bShowTo为1的情况下,我可以为你解释得出结论和对应原因

  1. bShowFrom=='false'结果为false
    因为bShowFrom为数字0,而数字0不等于字符串false,所以结果为false

  2. bShowFrom==false结果为true
    因为数字0在做判断的时候如果不是全等会做隐式转换,将number0改成布尔值的false,所以bShowFrom这时与false等同,结果为true

  3. bShowFrom==0 结果为true
    bShowFrom本身就是0,所以为true

  4. bShowFrom=='0' 结果为true
    双方类型不一致,一边为number一边为string,则number隐式转换为string进行比对,结果为true

如有帮助请采纳回答~