Object.is是 ES6 新增的用来比较两个值是否相等的方法,返回值是一个布尔值

1
Object.is(value1, value2)
1
2
3
4
5
6
7
Object.is(1, 1)                      // => true
Object.is(1, 2) // => false
Object.is({}, 2) // => false
Object.is({}, {}) // => false
Object.is(true, 1) // => false
Object.is(null, null) // => true
Object.is(null, undefined) // => false

可以看出,Object.is不会进行隐式转换,行为基本与===一致,但有几点需要注意

  • NaN

    1
    2
    Object.is(NaN, NaN)                    // => true
    NaN === NaN // => false
  • +0 和 -0

    1
    2
    3
    4
    5
    6
    Object.is(0, -0)                        // => false
    0 === -0 // => true
    Object.is(0, +0) // => true
    0 === +0 // => true
    Object.is(-0, +0) // => false
    +0 === -0 // => true