zoukankan      html  css  js  c++  java
  • 【js】 ==与===区别

    1、对于string,number等基础类型,==和===是有区别的

    1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
    2)同类型比较,直接进行“值”比较,两者结果一样
     
    2、对于Array,Object等高级类型,==和===是没有区别的
    进行“指针地址”比较
     
    3、基础类型与高级类型,==和===是有区别的
    1)对于==,将高级转化为基础类型,进行“值”比较
    2)因为类型不同,===结果为false
     
    严格运算符的运算规则

    相等运算符

    相等运算符在比较相同类型的数据时,

    与严格相等运算符完全一样。

    在比较不同类型的数据时,

    相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较

    (1)不同类型值

    如果两个值的类型不同,直接返回false。

     (1)原始类型的值

    原始类型的数据会转换成数值类型再进行比较。

    字符串和布尔值都会转换成数值,

    所以题主的问题中会有第二个string输出。

    (2)同一类的原始类型值

    同一类型的原始类型的值(数值、字符串、布尔值)比较时,

    值相同就返回true,值不同就返回false。

    (2)对象与原始类型值比较

    对象(这里指广义的对象,包括数值和函数)与原始类型的值比较时,

    对象转化成原始类型的值,再进行比较。

    (3)同一类的复合类型值

    两个复合类型(对象、数组、函数)的数据比较时,

    不是比较它们的值是否相等,而是比较它们是否指向同一个对象。

     (3)undefined和null

    undefined和null与其他类型的值比较时,

    结果都为false,它们互相比较时结果为true。

    (4)undefined和null

    undefined 和 null 与自身严格相等。

    null === null  //true
    undefined === undefined  //true

     (4)相等运算符的缺点

    相等运算符隐藏的类型转换,会带来一些违反直觉的结果。

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

    这就是为什么建议尽量不要使用相等运算


    作者:smile.轉角

    QQ:493177502

  • 相关阅读:
    关于Java中System.currentTimeMillis和System.nanoTime的错误认识
    多线程以外
    vim 小技巧
    Virtual Box HostOnly网络模式配置
    How 30 Minutes a Day Can Increase Your Intelligence
    YUM命令使用
    Hash算法及其应用
    jetty + apache httpd 反向代理配置
    使用SCTP优化网络
    .NET书籍推荐
  • 原文地址:https://www.cnblogs.com/websmile/p/5292380.html
Copyright © 2011-2022 走看看