• Javascript两个数的比较


    Strict equality using ===
      比较之前不转换类型,
      如果不同类型,不相等,
      如果相同类型:如果两个都不是numbers,只有自己和自己比较才相等,其他都不相等;
             如果两个都是numbers,两个有相同的值(都不是NaN)或者一个是 +0 另一个是-0才相等,其他都不相等。(The only case in which (x !== x) is true is when x is NaN.)


    Loose equality using ==
      两个值转换为一个common type(一个或者两个可能经过转换),
      后面的比较和 === 相同。

     Operand B
        Undefined Null Number String Boolean Object
    Operand A Undefined true true false false false false
    Null true true false false false false
    Number false false A === B A === ToNumber(B) A === ToNumber(B) A == ToPrimitive(B)
    String false false ToNumber(A) === B A === B ToNumber(A) === ToNumber(B) A == ToPrimitive(B)
    Boolean false false ToNumber(A) === B ToNumber(A) === ToNumber(B) A === B ToNumber(A) == ToPrimitive(B)
    Object false false ToPrimitive(A) == B ToPrimitive(A) == B ToPrimitive(A) == ToNumber(B) A === B


    ToNumber(A)试着在比较前转换它的参数为一个number,行为等价于 +A;
    ToPrimitive(A)试着在比较前转换它的参数为 a primitive value,试着调用A的一系列方法A.toString()和A.valueOf()。

    Same-value equality
      whether two values are functionally identical in all contexts.

    Sameness Comparisons
    xy=====Object.is
    undefined undefined true true true
    null null true true true
    true true true true true
    false false true true true
    'foo' 'foo' true true true
    0 0 true true true
    +0 -0 true true false
    0 false true false false
    "" false true false false
    "" 0 true false false
    '0' 0 true false false
    '17' 17 true false false
    [1, 2] '1,2' true false false
    new String('foo') 'foo' true false false
    null undefined true false false
    null false false false false
    undefined false false false false
    { foo: 'bar' } { foo: 'bar' } false false false
    new String('foo') new String('foo') false false false
    0 null false false false
    0 NaN false false false
    'foo' NaN false false false
    NaN NaN false false true
  • 相关阅读:
    Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料第6章
    安装Vault Professional Server的一些问题
    Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料第2章
    C++的构造函数和析构函数
    一些常用的字符串hash函数
    类的operator new与operator delete的重载
    计算字符串的相似度(编辑距离)
    C++的重载(overload)与重写(override)
    穷举法解24点游戏
    C语言字符串库函数的实现
  • 原文地址:https://www.cnblogs.com/skorzeny/p/6526644.html
Copyright © 2020-2023  润新知