js中的“==”双等运算符问题

来源:互联网 发布:给淘宝买家的感谢信 编辑:程序博客网 时间:2024/06/17 05:28

js中的“==”

  • 首先把javascript中的数据类型分成两组:
    1.String、Number、Boolean和Object(有);
    2.Undefined和Null(无);
    3.1与2之间的比较都为false;
    4.Undefined和Null之间的比较为true;
    5.NaN 不等于 NaN,NaN和任何值都不相等;
  • 其次,当同组数据类型相比较的时候,首先将两边的数据都转化成number类型;
    • 除了牢记两大分类外,还需要记住那些内置对象的toString()和valueOf()方法的规则。
    • 基本数据类型之间,直接调用Number;
    • 基本数据类型和引用数据类型:将引用数据类型转化为基本数据类型;
      • 先调用比较对象的valueof方法;
      • 再调用比较对象的tostring方法;
      • 如果是Date类型,则以上两步是反过来的;
    • parseInt(value)/parseFloat(value)
      • 转换情况
        • 字符串->只要最高位是数字则会转换成数值;否则转换成NaN
        • 其它->NaN
    • Number()
      • 转换情况
        • 就是把字符串两边的空白字符去掉,然后把两边的引号去掉,看它能否组成一个合法的数字。
        • 如果是,转化结果就是这个数字;否则,结果是NaN。
        • 当然也有例外,比如空白字符串转化为数字的结果是0。
    • toString
      • 当对象需要转换为字符串时,会调用它的toString()方法.。
      • 默认情况下,每个对象都会从Object上继承到toString()方法,
      • 如果这个方法没有被这个对象自身或者更接近的上层原型上的同名方法覆盖(遮蔽),则调用该对象的toString()方法时会返回”[object type]”,这里的字符串type表示了一个对象类型;
    • valueOf
      • JavaScript 调用 valueOf() 方法用来把对象转换成原始类型的值(数值、字符串和布尔值)。
      • 你很少需要自己调用此函数; JavaScript 会自动调用此函数当需要转换成一个原始值时。
      • 默认情况下, valueOf() 会被每个对象Object继承。每一个内置对象都会覆盖这个方法为了返回一个合理的值,如果对象没有原始值,valueOf() 就会返回对象自己;
原创粉丝点击