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,因为它们是不同类型的值。所以在项目中==要谨慎使用,==带来的便利性抵不上带来的阅读成本。

  • 相关阅读:
    Powershell数据处理
    Powershell About Active Directory Group Membership of a domain user
    Powershell About Active Directory Server
    Oracle Schema Objects——Tables——TableStorage
    Oracle Schema Objects——Tables——TableType
    English Grammar
    Oracle Database Documentation
    Oracle Schema Objects——Tables——Oracle Data Types
    Oracle Schema Objects——Tables——Overview of Tables
    What is Grammar?
  • 原文地址:https://www.cnblogs.com/cosyer/p/7047365.html
Copyright © 2011-2022 走看看