news 2026/10/23 1:40:21

副队长JavaScript教程(18)–比较运算符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
副队长JavaScript教程(18)–比较运算符

点此查看所有教程、项目、源码导航

文章目录

  • 1. 什么是比较
  • 2. 比较运算符
  • 3. 比较运算符的运算结果
  • 4. 宽松相等与严格相等区别
  • 5. 使用变量存储比较运算结果
  • 6. 小结

1. 什么是比较

在 JS 程序中,有时候需要对两个变量或者常量进行比较,比如判断两个数值的大小。
此时就需要用到JS里面的比较运算符。

2. 比较运算符

常用的比较运算符有 8 种:大于、小于、大于等于、小于等于、宽松等于、严格等于、宽松不等于、严格不等于,对应的 JS 操作符如下:

1>2;// 大于1<2;// 小于1>=2;// 大于等于1<=2;// 小于等于1==2;// 宽松相等1===2;// 严格相等1!=2;// 宽松不相等1!==2;// 严格不相等

注意,跟数学符号还是有所不同的,尤其是 JS 中=表示赋值,而==、===才是用来判断是否相等。

3. 比较运算符的运算结果

之前讲过算术操作符,其运算结果是数值。

那么比较运算符,运算结果是什么呢,例如1>2,其运算结果是什么?

其实关系运算,就是一种判断,1>2的判断结果,要么是正确、要么是错误。

之前我们正好学过一种数据类型,表达真假两个方面含义,就是布尔类型,布尔类型只有两个值 true、false,正好可以对应关系运算的结果。

在 JS 语言中,比较运算的结果是布尔类型,当判断成立时,比较运算结果为 true;当判断不成立时,比较运算的结果为 false。

所以我们看下上面运算的结果:

console.log(1>2);// falseconsole.log(1<2);// trueconsole.log(1>=2);// falseconsole.log(1<=2);// trueconsole.log(1==2);// falseconsole.log(1===2);// falseconsole.log(1!=2);// trueconsole.log(1!==2);// true

4. 宽松相等与严格相等区别

这是本节的重点,很多新手在这里容易踩坑。
==宽松相等:只对比两边的值,比较之前会自动做隐式类型转换,类型不一样也有可能相等。
===严格相等:先对比类型,再对比值,类型不一样直接返回 false,不会自动转换类型。

示例代码:

console.log(10=='10');// true,会把字符串'10'转成数字10再对比console.log(10==='10');// false,一个是number,一个是string,类型不同

对应的不等于同理:

  • !=:宽松不等,会触发隐式转换
  • !==:严格不等,不做类型转换,类型不同直接判定不等

开发推荐:优先使用 === 和!==,避免隐式转换带来意料之外的 bug。

5. 使用变量存储比较运算结果

既然比较运算的结果是布尔类型的 true 或 false 值,那么该值自然可以用变量存储。如下:

varresult=1>2;console.log(result);//输出false

这行代码先执行右侧,1>2不成立,所以运算结果是 false。
然后将 false 赋值给 result,所以 result 存储的就是布尔类型的 false。

6. 小结

有一些语言,关系运算的结果是用数字表示的,例如 C 语言。

但是更多的语言,选择使用布尔类型存储关系运算结果,这样更合理。因为使用数字可能会有歧义,你看到数字不一定能马上明确这是一个数学数字还是一个判断结果。而布尔类型是单独定义的类型,有单独的值 true、false,所以它肯定不会跟数字混淆,一看就知道是判断结果。

另外重点记住宽松相等和严格相等的差异:

  1. ==、!=宽松比较,会自动隐式转换类型;
  2. ===、!==严格比较,类型和值必须全部一致才成立;
  3. 实际项目开发,优先选择严格相等。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 1:40:09

【功能性模块】功能性模块: (4)感受野计算:疑惑中。。。

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:38:37

【工程与环境】CASE SOLVED: ubuntu16.04 搜狗拼音中文乱码

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:38:24

Docker Buildx实战:从x86构建ARM64镜像与多架构部署指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:36:39

设备OEE分析三步法:找损失、拆原因、定改善动作实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:36:29

纯VC++手绘虚拟仪表控件:GDI双缓冲+参数化刻度实现

简介&#xff1a;本资源是一个基于VC开发的虚拟仪表控件实现项目&#xff0c;面向工业自动化、汽车电子及嵌入式UI开发领域的中高级C工程师与MFC开发者&#xff0c;解决专业级数据可视化控件复用难题。项目完整封装了可拖拽集成的MFC仪表控件&#xff0c;支持指针动态平滑移动、…

作者头像 李华