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 相关文章推荐
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
vue 路由嵌套高亮问题的解决方法
May 17 Javascript
微信小程序http连接访问解决方案的示例
Nov 05 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
vue 子组件watch监听不到prop的解决
Aug 09 Javascript
使用vue构建多页面应用的示例
Oct 22 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python pycharm的安装及其使用
2019/10/11 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
转党组织关系介绍信
2014/01/08 职场文书
一句话工作感言
2014/03/01 职场文书
李培根演讲稿
2014/05/22 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis