美文网首页
js 中==和===

js 中==和===

作者: 自由加咖啡 | 来源:发表于2017-03-02 10:32 被阅读9次

    js是弱类型语言,==比较时会进行隐式转换。比如 1 == '1'是true,因为会把他们自动转化为数字进行处理。===不会进行类型转换,是绝对相等,一般用这个比较靠谱。
    js中 === 最保险的比较时比较两个字符串是否相等,因为在某些情况下,其他类型的值都会转化为字符串进行存储。比如,取input的val值取出来的就是字符串,但是我们赋值的时候是数字。

    奇怪的情况:
    1、 0 == '0'; //true
    2、 0 == !'0';//true
    3、 !0 == '0'; //false
    4、 0 == '000000'; //true
    5、 0==false; //true
    6、 '00' == '000'; //false
    7、 0 == ''; //true
    8、'0' == ''; //false
    9、 Boolean('0'); //true
    10、 Boolean(0); //false

    分析:
    1、隐式转换,把字符串'0'转为数字0,然后比较
    2、隐式转换,把数字0转为布尔值false, !(非)会把字符串'0'转为false
    3、数字0是false,!(非)会把数字0转为true,true 和字符串'0'不相等
    4、隐式转换,把字符串'000000',转化为数字,即是0
    5、0在和非数字且不能转为数字的值比较时,会自动转化为布尔值。即false
    6、字符串比较,不相等
    7、0 和 '' 都会隐式转换为false
    8、字符串比较,不相等
    (上面如果===,全都是false)

    关于true和false的比较
    'true' == true; //false
    'false' == false //false
    字符串不会进行隐式转换所以不相等

    相关文章

      网友评论

          本文标题:js 中==和===

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