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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
js调试工具Console命令详解
Oct 21 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
Oct 15 Javascript
Node.js 中exports 和 module.exports 的区别
Mar 14 Javascript
vue+axios 前端实现的常用拦截的代码示例
Aug 23 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 Javascript
vue实现文件上传读取及下载功能
Nov 17 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
实现一个简单得数据响应系统
Nov 11 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
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
python连接mysql实例分享
2016/10/09 Python
Python中static相关知识小结
2018/01/02 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
4s店机修工岗位职责
2013/12/20 职场文书
物理教师自荐信范文
2013/12/28 职场文书
培训讲师邀请函
2014/01/10 职场文书
《和我们一样享受春天》教学反思
2014/02/07 职场文书
公立医院改革实施方案
2014/03/14 职场文书
法律顾问服务方案
2014/05/15 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL