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下获取object(ActiveX)的Param的代码
Sep 15 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 Javascript
jQuery滑动到底部加载下一页数据的实例代码
May 22 jQuery
详解a++和++a的区别
Aug 30 Javascript
在Angular中实现一个级联效果的下拉框的示例代码
May 20 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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 删除数组元素
2009/01/16 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
Python输出9*9乘法表的方法
2015/05/25 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
python机器学习之神经网络(三)
2017/12/20 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
在Django中实现添加user到group并查看
2019/11/18 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
党校培训思想汇报
2014/01/03 职场文书
校园新闻广播稿
2014/01/10 职场文书
优秀教师个人材料
2014/12/15 职场文书
实习指导老师意见
2015/06/04 职场文书
python实现简单反弹球游戏
2021/04/12 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python