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

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日

悬赏问题

  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?