• [Javascript] Object.is() vs ===


    Object.is

    console.log(Object.is(2, 2)); // true
    console.log(Object.is({}, {})); // false

    Strict Equality: a === b

    console.log(2 === 2); // true
    console.log({} === {}); // false

    So what’s the difference between Object.is and ===?

    In almost all the cases, they are the same.

    But...

    there are two rare cases where the behavior of === is different.

    1. NaN === NaN is false, although they are the same value.
    2. -0 === 0 and 0 === -0 are true, although they are different values.

    First Special Case: NaN

    let width = 0 / 0; // NaN
    let height = width * 2; // NaN
    console.log(width === height); // false

    Remember that NaN === NaN is always false

    However, NaN is the same value as NaN:

    console.log(Object.is(width, height)); // true

    The reason for NaN === NaN being false is largely historical, so I suggest accepting it as a fact of life. You might run into this if you try to write some code that checks a value for being NaN (for example, to print a warning).

    function resizeImage(size) {
      if (size === NaN) {
        // This will never get logged: the check is always false!
        console.log('Something is wrong.');
      }
      // ...
    }

    Second Special Case: -0

    Both 0 === -0 and -0 === 0 are always true:

    let width = 0; // 0
    let height = -width; // -0
    console.log(width === height); // true

    However, 0 is a different value from -0:

    console.log(Object.is(width, height)); // false

    [From Just Javascript]

  • 相关阅读:
    DRF简易了解
    Restful API接口规范
    Python分页
    vue笔记(一)
    CNN实现手写数字识别
    深度学习框架Keras
    NLP自然语言处理
    深度学习框架Tensorflow
    维度的区分
    矩阵求导
  • 原文地址:https://www.cnblogs.com/Answer1215/p/15161980.html
Copyright © 2020-2023  润新知