关于js中一个逻辑判断引发的问题

2020-11-28  本文已影响0人  林下人水边兵

在java中如果如果空引用 空对象 当做判断的话 直接扔出个 空指针, 代码无法继续执行

在js中,很常见看到如下代码

    var i=manager.getCache('key_name')//没有则返回 '' 有则返回 相对应的值 
    if(i)
    {
     //业务逻辑a

    }else{
      
      //业务逻辑b

    }

在js中运行是没有问题的,因为 js本身就是一门弱语言,脚本语言,海纳百川吧

相反

如果把这一段代码 放到 java 中去运行的话, (这里是关注if的逻辑判断,不是照抄ok)
很遗憾

你会发现 有可能直接扔给个空指针 NullPointerException

u=136761945,3880979753&fm=26&gp=0.jpg

我们再把这段代码稍微修改一下

    var i=manager.getCache('key_name')//没有则返回 '' 有则返回 相对应的值 
    if(i==0)
    {
     //业务逻辑a

    }else{
      
      //业务逻辑b

    }

假设:key_name 对应的 键值是没有值的 返回的一个 ''
走到 if ,逻辑是走哪块代码块
答案: 业务逻辑a

小细节: 在js中 ,js 的 '' 空字符 代表的是 false
而 0 1 在程序中 自然 0 是false 1是true
那么

''==false
0==false 

if(''==0)   肯定是true罗

timg.jpg

因为之前在定义 数据 把0 也当做数据其中一个, 所以引发了 莫名其妙 跑到其他代码块了
记录一下

上一篇 下一篇

猜你喜欢

热点阅读