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。

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

  • 相关阅读:
    Linux之Shell编程read读取控制台输入
    Linux之Shell编程while循环基本使用
    Linux之Shell编程for循环基本使用
    Linux之Shell编程case语句
    C语言 ##__VA_ARGS__
    C语言 __VA_ARGS__
    C语言 ##运算符
    C语言 __cplusplus
    C语言 #运算符
    C语言 extern “C”
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/4100190.html
Copyright © 2011-2022 走看看