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权威指南

  • 相关阅读:
    Day01 基本SQL SELECT
    Java IO流
    排序: 选择排序
    Java的数据存储机制
    Java反射基础笔记
    学习面向对象的三条主线之三 面向对象的三大特征 关键字
    学习面向对象的三条主线之二 面向对象的三大特征
    Oracle数据库知识积累
    office技巧
    如何读书
  • 原文地址:https://www.cnblogs.com/lawrencechen/p/4726907.html
Copyright © 2011-2022 走看看