zoukankan      html  css  js  c++  java
  • js中的连等==和全等===

    ===是没有强制类型转换的,和其他大部分语言的==是一样的。而js中==是有类型转换的。

    比如说"true"==true就是错的,Boolean("false")==false也是错的。

    '' == '0'           // false
    
    == ''             // true
    
    == '0'            // true
    
    false == 'false'    // false
    
    false == '0'        // true
    
    false == undefined  // false
    
    false == null       // false
    
    null == undefined   // true
    
    ' 	
     ' == 0     // true

    也就是说,对于==是有一定的类型转化的。比如,这里的一个是string,一个是布尔值,就都会向数字进行转化,那么"true"转化为了NaN,而true转化为了0,自然就是不相等了。而Boolean("false")为true,所以也是不相等的。

    js中提供了两组操作符,相等和不相等(先转换再比较),全等和不全等(仅比较而不转换)。

    1.相等和不相等

    相等即==,如果相等,则返回true。而不相等就是!= ,如果不相等,则返回true。这两个操作符都会先转换操作数,然后再比较。转换的基本准则如下:

    如果有一个操作数是布尔值,则在比较之前先将其转换为数值false转换为0,true转换为1。

    如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转为数值。

    如果一个操作数是对象,另一个不是,那么调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。

    在比较时,还需要遵守下面的重要规则:

    null和undefined是相等的。

    要比较相等性之前,不能将null和undefined转换为其他值。如果有一个操作数是NaN,则相等操作符返回false, 而不相等操作符返回true。

    重要提示:即使两个操作符都是NaN,相等操作符也返回false因为按照规则,NaN不等于NaN。

    如果两个操作数都是对象,则比较他们是不是同一个对象,如果两个操作数都指向同一个对象,则相等操作符返回true;否则,返回false。而===和!==不会进行强制类型转换。

    null==undefined会返回true,因为它们是类似的值;但是null===undefined会返回false,因为它们是不同类型的值。所以在项目中==要谨慎使用,==带来的便利性抵不上带来的阅读成本。

  • 相关阅读:
    JWT认证-插件准备
    drf 框架 三大组件
    drf框架 视图、工具视图、视图集
    drf框架 ModelSerializer
    CentOS6.5 上crontab每天自动备份mysql数据库
    php-GatewayWorker搭建实时聊天室
    Centos6.8实现SVN提交后自动更新目录
    Python在线聊天软件(Tkinter)
    Navicat for MySQL连接mysql数据库时提示错误:Can't connect to MySQL server (10060)
    Ubuntu16下apache2安装ssl阿里云证书
  • 原文地址:https://www.cnblogs.com/cosyer/p/7047365.html
Copyright © 2011-2022 走看看