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 相关文章推荐
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
JS 两个字符串时间的天数差计算
Aug 25 Javascript
使用javascript实现页面定时跳转总结篇
Sep 21 Javascript
javascript 获取函数形参个数
Jul 31 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
Mar 26 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
Jan 25 Javascript
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
ztree加载完成后显示勾选节点的实现代码
Oct 22 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
小程序如何构建骨架屏
May 29 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读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
List Installed Software Features
2007/06/11 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
Python实现全排列的打印
2018/08/18 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
土木工程应届生自荐信
2013/09/24 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
2015年环保局工作总结
2015/05/22 职场文书
初三数学教学反思
2016/02/17 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
详解Python flask的前后端交互
2022/03/31 Python
httpclient调用远程接口的方法
2022/08/14 Java/Android