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 相关文章推荐
把input初始值不写value的具体实现方法
Jul 04 Javascript
javascript读写json示例
Apr 11 Javascript
JavaScript中的全局对象介绍
Jan 01 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
Flow之一个新的Javascript静态类型检查器
Dec 21 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
JavaScript实现时钟滴答声效果
Jan 29 Javascript
史上最全JavaScript常用的简写技巧(推荐)
Aug 17 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
微前端qiankun改造日渐庞大的项目教程
Jun 21 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 时间日期操作实战
2011/08/26 PHP
php中rename函数用法分析
2014/11/15 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
JS获取地址栏参数的小例子
2013/08/23 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
js对象基础实例分析
2015/01/13 Javascript
九种原生js动画效果
2015/11/11 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
大学校园活动策划书
2014/02/04 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
环保倡议书格式范文
2014/05/14 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
会计求职自荐信
2015/03/26 职场文书
2015国庆节感想
2015/08/04 职场文书
2016年国培研修日志
2015/11/13 职场文书
医生行业员工的辞职信
2019/06/24 职场文书