JavaScript中三个等号和两个等号的区别(== 和 ===)浅析


Posted in Javascript onSeptember 22, 2016

== equality 等同,=== identity 恒等。

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

==,不做类型转换,类型不同的一定不等。

下面分别说明:

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

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

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

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

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

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

6、如果两个值都是null,或者都是undefined,那么[相等]。

再说 ==,根据以下规则:

1、如果两个值类型相同,进行 === 比较。

2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:

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

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

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

d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。 js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻 烦,我也不大懂)

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

举例:

"1" == true

类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。

= 赋值运算符

== 等于
=== 严格等于

例:

var a = 3; 
var b = "3"; 
a==b 返回 true 
a===b 返回 false

因为a,b的类型不一样

===用来进行严格的比较判断

以上所述是小编给大家介绍的JavaScript中三个等号和两个等号的区别(== 和 ===),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 异步处理进度条
Apr 01 Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
javascript学习笔记(四)function函数部分
Sep 30 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
面向切面编程(AOP)的理解
May 01 Javascript
JS实现的表格行上下移动操作示例
Aug 03 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
JS实现简易日历效果
Jan 25 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 #Javascript
JavaScript面试题大全(推荐)
Sep 22 #Javascript
JavaScript 是什么意思
Sep 22 #Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 #Javascript
JavaScript与java语言有什么不同
Sep 22 #Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 #Javascript
深入理解JavaScript中的并行处理
Sep 22 #Javascript
You might like
php制作的简单验证码识别代码
2016/01/26 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
学习vue.js计算属性
2016/12/03 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Python如何执行系统命令
2020/09/23 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
探亲假请假条
2014/04/11 职场文书
加强作风建设心得体会
2014/10/22 职场文书
搞笑结婚保证书
2015/05/08 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
mysql多表查询-笔记七
2021/04/05 MySQL
golang语言指针操作
2022/04/14 Golang