zoukankan      html  css  js  c++  java
  • ==比较时的坑

    ''=='0' //false 2个都是字符串 直接比较,不需要转换
    0=='' //true ''转为数字
    0=='0' //true '0'转为数字

    false=='false' //false false转为0 ,'false'为true
    false=='0' //true
    与运算符及ECMAScript内定义的其两边的表达式的类型转换规则有关
    false=='0' 这种情况是两边分别将布尔类型和字符串都转换成了数字进行比较,false->0,'0'->0,所以实际上最后是 0==0

    false==undefined //false undefined和null都是没有值,所以它们和false比都不相等
    false==null //false
    null==undefined //true

    ' '==0 //true

    注:转换优先级Object型低于字符型,字符型低于数字型

    一些补充,对于转换规则,可以参考ECMA262,已经写得很清楚了,另外《javascript高级程序设计(第三版)》都也有对对象转为原始值的详细描述。

    另外,这里有一个疑问[]==0 是如何隐式转换的,在讨论这个问题的时候,有不少人认为是Number([])==0 ,但我并不觉得是这样,

    我觉得是先[]转为""  ,""==0比较时又将""转为了0。

    不知道你们是怎么认为的。。。

  • 相关阅读:
    angularjs里对JS的lowercase和uppercase的完善
    UVA
    UVA
    MySQL 8.0X的安装与卸载命令
    回文树(模板+例题)
    UESTC
    UVALive
    BZOJ
    ACM-ICPC 2018 南京赛区网络预赛 I Skr (马拉车+hash去重)或(回文树)
    ACM-ICPC 2018 南京赛区网络预赛 E AC Challenge(状压dp)
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4100190.html
Copyright © 2011-2022 走看看