zoukankan      html  css  js  c++  java
  • js中两个对象的比较机制

    看到的一个关于类型转换的题目:

    对象 ab 是两个字面量函数,在进行比较的时候,可以发现大小和相等的比较结果都是 false:

    var a = {b: 42};
    var b = {b: 43};
    
    a < b; //false
    a == b; //false 
    a > b; //false
    
    a <= b; //true 
    a >= b; //true 
    

    在这个比较中,==、!= 不说了,基础问题了;说下 >、< 这种吧,最后都会转换为数值形式做比较。

    首先尝试调用对象的 Symbol.toPrimitive 方法得到原始值。

    如果没有这个方法就再尝试调用 valueOf。

    经过以上转换后,如果两边都是 string,则按 Unicode 逐位比较;否则,都强转成 number 比较。

    Object 强转后就变成了 NaN。NaN 是个特殊的 number,它跟任意数(包括它自己)做任何比较运算,恒为 false。

    至于 >=、<= 则是取反。

  • 相关阅读:
    C++中的类模板详细讲述
    函数模板和模板函数
    vs2008 快捷键大全
    #宏定义##
    多工程项目设置
    conemu 配置
    itcast-svn
    itcast-spring-三大框架整合
    Spring通知方法错误
    动态代理
  • 原文地址:https://www.cnblogs.com/ZerlinM/p/13521360.html
Copyright © 2011-2022 走看看