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

  • 相关阅读:
    Palindrome Partitioning
    triangle
    Populating Next Right Pointers in Each Node(I and II)
    分苹果(网易)
    Flatten Binary Tree to Linked List
    Construct Binary Tree from Inorder and Postorder Traversal(根据中序遍历和后序遍历构建二叉树)
    iOS系统navigationBar背景色,文字颜色处理
    登录,注销
    ios 文字上下滚动效果Demo
    经常崩溃就是数组字典引起的
  • 原文地址:https://www.cnblogs.com/websmile/p/5292380.html
Copyright © 2011-2022 走看看