zoukankan      html  css  js  c++  java
  • [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]

  • 相关阅读:
    Appium Android sdk自动化工具安装
    roboframework-ride运行案例时报 Error 267 错误问题
    Flask 编写http接口api及接口自动化测试
    ssh免密码登录快速配置方法
    Ansible 介绍和使用
    Python 递归返回树形菜单JSON串 <flask>
    python学习之路web框架续
    python学习之路web框架续
    python学习之路web框架
    python学习之路前端-Dom
  • 原文地址:https://www.cnblogs.com/Answer1215/p/15161980.html
Copyright © 2011-2022 走看看