zoukankan      html  css  js  c++  java
  • 【es6】object.is()&&==&&===

    首先,先粗略了解一下这三个玩意儿:

    1. ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较;
    2. ===:恒等,严格比较运算符,不做类型转换,类型不同就是不等;
    3. Object.is()是ES6新增的用来比较两个值是否严格相等的方法,与===的行为基本一致。

    下面分别详细说明一下这三个玩意儿:

    先说===,这个比较简单,只需要利用下面的规则来判断两个值是否恒等就行了:

    1. 如果类型不同,就不相等
    2. 如果两个都是数值,并且是同一个值,那么相等; 
    3. 值得注意的是,如果两个值中至少一个是NaN,那么不相等(判断一个值是否是NaN,可以用isNaN()或Object.is()来判断)。
    4. 如果两个都是字符串,每个位置的字符都一样,那么相等;否则不相等。
    5. 如果两个值都是同样的Boolean值,那么相等。
    6. 如果两个值都引用同一个对象或函数,那么相等,即两个对象的物理地址也必须保持一致;否则不相等。
    7. 如果两个值都是null,或者都是undefined,那么相等。

    再说Object.is(),其行为与===基本一致,不过有两处不同:

    1. +0不等于-0。
    2. NaN等于自身。

    举个栗子☺:

    +0 === -0 //trueNaN === NaN // false

    Object.is(+0, -0) // falseObject.is(NaN, NaN) // true

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5

    最后说==,根据以下规则来进行判断:

    1. 如果两个值类型相同,进行===比较。
    2. 如果两个值类型不同,那么他们可能相等。根据下面规则进行类型转换,然后再比较: 
    3. 如果一个是null、一个是undefined,那么相等。
    4. 如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
    5. 如果任一值是true,把它转换成 1 再比较;如果任一值是false,把它转换成 0 再比较。
    6. 如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 
    7. JS的核心内置类,会尝试valueOf先于toString;但有一个是例外——Date,Date利用的是toString转换。
    8. 非JS核心的对象,令说(比较麻烦,我也不大懂)。
    9. 任何其他组合,都不相等。

    举个栗子☺: 
    "1" == true:类型不等,true 会先转换成数值 1 ,现在变成 “1” == 1 ,再把 “1” 转换成 1 ,比较 1 == 1 , 相等。

    举个全局的栗子☺:

    1. =:赋值运算符。
    2. ==:等于。
    3. ===:严格等于。
    4. Object.is():加强版严格等于。

    例:

    var a = 3; var b = "3"; 

     

    a==b;    // true

    a===b;   // false,因为*a**b*的类型不一样 Object.is( a, b );  //false,因为*a**b*的类型不一样 

  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/ccnNL/p/7638071.html
Copyright © 2011-2022 走看看