logologo
  • WebUI
  • JavaScript
  • TypeScript
  • C++
  • ··
    • C
    • Rust
    • Python
    • Cangjie
    • SQL
    • Design
    概述
    常见的数据结构
    ecmascript相关
    enumerable
    Object 内部实现
    sameValue 算法
    unicode
    语法设计
    声明
    表达式
    模块
    语句
    严格模式
    类型系统
    Array
    typedArray
    Map
    Number
    Object
    Set
    String
    结构化
    基本的组织元素
    动态性
    并发性
    范式
    函数式
    函数的行为
    闭包
    函数
    从运算式语言到函数式语言
    语言的多范式

    Last Updated: 9/30/2025, 3:44:10 AM

    Previous pageObject 内部实现Next pageunicode

    #sameValue 算法

    ECMA 规范中定义了 “SameValue 算法”:

    • 对于原始类型值:只有当类型相同且值完全一致时才返回 true。
    • 对于对象:只有当两者的值指向同一个内存地址(即引用同一个对象)时才返回 true。
    • 特殊值处理:对 NaN、-0 和 +0 的判断更符合数学逻辑(见下文对比)。

    Object.is方法使用了SameValue算法

    #Object.is 与 ===的区别

    核心区别在于特殊值的处理

    比较场景Object.is(a, b)a === b
    NaN 与 NaNtruefalse
    -0 与 +0falsetrue

    Object.is 更加符合预期

    两者在其余方面没有差别:

    • 先比较类型
    • 再比较值