当前位置: 首页 > news >正文

JavaScript进阶(三十一): === 与 == 比较运算符

文章目录

    • 一、前言
    • 二、严格相等运算符 (===)
    • 三、宽松相等运算符 (==)
    • 四、推荐做法
    • 五、特殊情况

一、前言

JavaScript 中,===== 都是比较运算符,但它们在比较时有重要区别:

二、严格相等运算符 (===)

  • 不进行类型转换
  • 只有当两个操作数的值和类型都相同时才返回 true
  • 也称为"严格相等"或"恒等运算符"
5 === 5    // true
'5' === 5   // false (类型不同)
true === 1  // false
null === undefined // false

三、宽松相等运算符 (==)

  • 会进行类型转换
  • 如果类型不同,会尝试将操作数转换为相同类型后再比较
  • 也称为"抽象相等"
5 == 5     // true
'5' == 5   // true (字符串转换为数字)
true == 1  // true (布尔值转换为数字)
null == undefined // true

四、推荐做法

在大多数情况下,推荐使用 ===,因为:

  1. 它更严格,避免隐式类型转换带来的意外行为;
  2. 代码意图更清晰;
  3. 性能稍好(不需要进行类型转换);

五、特殊情况

使用 == 时,JavaScript 的类型转换规则有时会令人困惑:

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

理解这些差异有助于编写更可靠、更易维护的 JavaScript 代码。

相关文章:

  • P1903 [国家集训队] 数颜色 / 维护队列 Solution
  • 【趣谈】Cyber、Web、Network都是网络有什么区别
  • WinSW注册服务
  • Windows环境下用pyinstaller将python脚本编译为exe文件
  • 使用pip3安装软件包报错`externally-managed-environment`的几种解决方式
  • Java SE(5)——数组
  • Cesium添加WMS,WMTS,地形图图,3D Tiles数据
  • AimRT 从零到一:官方示例精讲 —— 二、HelloWorld示例.md
  • 【C++11】新的类功能、lambda
  • 存储器分类
  • 【网络】HTTP报文首部字段
  • Qt的WindowFlags窗口怎么选?
  • LeetCode 2906 统计最大元素出现至少K次的子数组(滑动窗口)
  • oracle怎样通过固化较优执行计划来优化慢sql
  • ant design pro 项目发布遇到登录页访问404
  • 【免费下载】2012-2023年全国夜间灯光数据
  • 从遍历序列构造二叉树:前序+中序与中序+后序的递归解法详解
  • JavaScript面试问题
  • tbb parallel_for 使用
  • 颜色分类,不靠“调色盘”:双指针 VS 计数排序的正面PK
  • 迎接八方来客:全国多地“五一”假期党政机关大院停车场免费开放
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%
  • 解密62个“千亿县”:强者恒强,新兴产业助新晋县崛起
  • 发挥全国劳模示范引领作用,加速汽车产业电智化转型
  • 4月人文社科联合书单|天文学家的椅子
  • 王毅出席金砖国家外长会晤