javaScript中"=="和"==="的区别详解


Posted in Javascript onMarch 16, 2018

区别:

==, 两边值类型不同的时候,要先进行类型转换,再比较。
==,不做类型转换,类型不同的一定不等。

下面分别说明:

先说 "===",这个比较简单。下面的规则用来判断两个值是否===相等:

1、如果类型不同,就不相等

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

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

4、如果两个值都是true,或者都是false,那么相等。

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

6、如果两个值都是null,或者都是undefined,那么相等。
再说 "=="
如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:

a、如果一个是null、一个是undefined,那么相等。

b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。

c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。

d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 js核心内置类,会尝试valueOf先于toString;

e、任何其他组合,都不相等。

总结:

也就是说"=="它是值之间的比较,而:"==="不仅仅是值之间的比较,也是类型之间的比较,一般在做项目的时候,根据业务的不同我们决定用哪一个,大多数开发人员习惯于"=="这样是不严谨的.

Javascript 相关文章推荐
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
js截取固定长度的中英文字符的简单实例
Nov 22 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
基于jQuery Tipso插件实现消息提示框特效
Mar 16 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
JavaScript实现的CRC32函数示例
Nov 23 Javascript
从vue源码看props的用法
Jan 09 Javascript
node.js博客项目开发手记
Mar 16 #Javascript
vue iView 上传组件之手动上传功能
Mar 16 #Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 #Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 #Javascript
JavaScript的数据类型转换原则(干货)
Mar 15 #Javascript
p5.js入门教程之小球动画示例代码
Mar 15 #Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
Mar 15 #Javascript
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
Python正则简单实例分析
2017/03/21 Python
Python实现的矩阵类实例
2017/08/22 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
什么是反射?如何实现反射?
2016/07/25 面试题
元旦晚会开场白
2015/05/29 职场文书
风之谷观后感
2015/06/11 职场文书
高中同学会致辞
2015/08/01 职场文书
用python自动生成日历
2021/04/24 Python
Python torch.flatten()函数案例详解
2021/08/30 Python
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers