不试一下怎么知道我不行? 2022-03-16 21:21 采纳率: 91.3%
浏览 33
已结题

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 都是没问题的

请求帮助!

  • 写回答

1条回答 默认 最新

  • iMingzhen 2022-03-16 21:33
    关注

    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

    如有帮助请采纳回答~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月16日