zoukankan      html  css  js  c++  java
  • JavaScript:逻辑操作符“==”与“===”的区别

    Summary

    JavaScript中,逻辑操作符“===”会先检查操作数的数据类型,对不同的数据类型会返回false. 而“==”对不同类型的操作数进行比较时,会进行类型转换后再比较。

    Description

    在JavaScript中进行判断的两种逻辑操作符:

    1. == (相等)
    2. === (严格相等/全等)

    由于JavaScript是弱类型的脚本语言(weakly typed),用于作比较的两个操作数的类型允许不一致。而这两个逻辑操作符最大的区别在于对操作数类型的容忍度。

    即:如果两个操作数的数据类型不一致

    • “==” 会尝试对操作数的数据类型进行转换后再进行比较。
    • “===”会直接返回false。
    console.log(typeof null, typeof undefined); //object undefined
    console.log(null == undefined, null === undefined); //true false

    可见,由于null与undefined的类型不同,两种比较的结果也不同。

    再举例:

    if(foo){
        doSomething;
    }
    
    //foo为false的情况:
    //false
    //0
    //'' (空字符串)
    //null
    //undefined
    //NaN
    //且除了NaN外,任意组合使用"=="作比较的结果都是true,使用"==="作比较的结果都是false,如if('' == 0)为true.
    //NaN与其他任何值都不相等,即当且仅当a=NaN时,a != a为true.

    对于“==”和“===”比较更详细的规则,可以参考我的印象笔记

    参考资料:《JavaScript权威指南

  • 相关阅读:
    LeetCode题解No11——“盛水最多的容器”
    第二次作业
    第一章 模式识别基本概念
    第一次个人作业
    第02组 Beta版本演示
    第02组 Beta冲刺(4/4)
    第02组 Beta冲刺(3/4)
    第02组 Beta冲刺(2/4)
    第02组 Beta冲刺(1/4)
    第02组 Alpha事后诸葛亮
  • 原文地址:https://www.cnblogs.com/lawrencechen/p/4726907.html
Copyright © 2011-2022 走看看