美文网首页
React-Native:js ==与===区别(两个等号与三个

React-Native:js ==与===区别(两个等号与三个

作者: wfunny | 来源:发表于2018-01-15 17:02 被阅读712次

    最近在项目遇到一个bug,code码返回成功(“0”)的时候页面是可以展示,code码不对(“2012”)的是页面没有按照我写的code的码的处理来展示了。很是郁闷。最后跟踪了一下问题,发现后台返回的code码是string类型的,前端定义的是number类型的。但是问题就是,code码正确的时候为什么能展示了呢?

    最后一步步跟踪,发现原来是==和===的区别。。。。我去。。。。
    真的是抓狂哇!!!!
    错误代码的处理

    if (json.code != 0) {
                        throw { code: json.code, msg: json.message };
                    }
    return json.model;
    
     if (error.code === 2012) {//
    进行code码错误的特许处理
      .....
      }
    
    这两段代码的重点在于 code != 0 和code === 2023的区别了

    在code返回的是'0'的时候 表达式code !=0 是false,返回了数据model ,因为==之间的比较是先转化成同一类型后再看值相不相等 ,但是code === 2012的表达式 是false ,所以没有进行我写的错误处理。因为===如果类型不同,则结果就不等了。原来原因就是。。。这里。这就能解释为什么了。。。代码坑。。。

    下面对==和===的区别做一个全部的解释
    1、对于string,number等基础类型,==和===是有区别的

    1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
    2)同类型比较,直接进行“值”比较,两者结果一样

    2、对于Array,Object等高级类型,==和===是没有区别的

    进行“指针地址”比较

    3、基础类型与高级类型,==和===是有区别的

    1)对于==,将高级转化为基础类型,进行“值”比较
    2)因为类型不同,===结果为false

    相关文章

      网友评论

          本文标题:React-Native:js ==与===区别(两个等号与三个

          本文链接:https://www.haomeiwen.com/subject/wbddoxtx.html