JS中==、===你分清楚了吗


Posted in Javascript onMarch 04, 2020

==、===都是相等运算符,这个大家应该都知道,但二者有什么区别呢?其实==是相等,===是严格相等,那他们有什么本质的区别呢?下面我就给大家细细道来。

  • =:赋值运算符
  • ==:判断是否相等:忽略了类型进行值的比较。
  • ===:判断是否相等:先进行值的比较,如果值相等,再去比较类型。即带有类型的值的比较。

==相等

比较两个值的时候,有两种情况,一种如果两个值的类型相同,就直接比较;另一种如果两个值得类型不同,则会尝试改变为相同的类型在进行比较
第一种很好理解,直接比较完事儿,第二种就更有趣一些,它到底是怎么转换的呢?下面我们一一列举

数字和字符串比较

99 == ''99"

大家猜一猜结果是什么True?False?

结果为True
其实JS在数字和字符串比较时,都是把字符串转换为数字,再对数字进行比较的,举个列子

99 == "chuichui"

JS是怎么转换的呢?

99 == NaN // false

JS尝试转换字符串'chuichui',但是该字符串并不能转换为数字,这时候转换的结果就为NaN

布尔值和其他类型比较

其实JS在布尔值和其他类型比较时,都是把布尔值转换为数字,再进行比较的,举个列子

1 == true
↓↓↓↓↓↓
1 == 1

JS会将true转化为数字1,再做比较
那"1" == true又是怎么比较的呢?

"1" == true
↓↓↓↓↓↓
"1" == 1
↓↓↓↓↓↓
1 == 1 // true

转换顺序

  1. 将true转换为1
  2. 将字符串“1”转换为数字1
  3. 数字1和数字1比较

null和undefined比较

null == undefined

大家猜一猜,结果是True?False?

结果为True
是不是感觉很奇怪,但规则就是这样。我们可以理解为都是“没有值”
只不过一个是没有值得变量,一个是没有值的对象,因此他们相似

小心

有一个需要注意的地方,有些转换你可能猝不及防

false == ""
True?False?

结果为True
转换过程

  1. false转化为0
  2. 空字符串""转换为0,没错就是0 !
  3. 数字0和数字0比较

下面我们在说说严格相等 ===

===严格相等

有了前面的相等的定义,我想大家能猜个八九不离十,严格相等就是类型和值完全相同,这里不存在以上所存在的转换问题

最后

操作数1 == 操作数2, 操作数1 === 操作数2

比较过程:

双等号==:

(1)如果两个值类型相同,再进行三个等号(===)的比较

(2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:

1)如果一个是null,一个是undefined,那么相等

2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较

三等号===:

(1)如果类型不同,就一定不相等

(2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)

(3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。

(4)如果两个值都是true,或是false,那么相等

(5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等

(6)如果两个值都是null,或是undefined,那么相等

到此这篇关于JS中==、===的文章就介绍到这了,更多相关JS中==、===内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木

Javascript 相关文章推荐
javascript下操作css的float属性的特殊写法
Aug 22 Javascript
ExtJs之带图片的下拉列表框插件
Mar 04 Javascript
javascript 图片上一张下一张链接效果代码
Mar 12 Javascript
热点新闻滚动特效的js代码
Aug 17 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
May 25 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
JavaScript对象属性操作实例解析
Feb 04 Javascript
微信小程序 scroll-view的使用案例代码详解
Jun 11 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 Javascript
javascript中导出与导入实现模块化管理教程
Dec 03 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 #Javascript
通过实例了解Javascript柯里化流程
Mar 03 #Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 #Javascript
Javascript作用域和作用域链原理解析
Mar 03 #Javascript
JS数组方法reduce的用法实例分析
Mar 03 #Javascript
Javascript模拟实现new原理解析
Mar 03 #Javascript
JS面向对象编程——ES6 中class的继承用法详解
Mar 03 #Javascript
You might like
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
javascript 函数式编程
2007/08/16 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
教大家玩转Python字符串处理的七种技巧
2017/03/31 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
python实现年会抽奖程序
2019/01/22 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
python实现二分查找算法
2020/09/18 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
升学宴答谢词
2015/01/05 职场文书
教师节领导致辞
2015/07/29 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python