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提交并解析后台返回的XML的代码
Nov 03 Javascript
Mootools 1.2教程 Tooltips
Sep 15 Javascript
关于Javascript模块化和命名空间管理的问题说明
Dec 06 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
JavaScript记录光标在编辑器中位置的实现方法
Apr 22 Javascript
详解Javascript函数声明与递归调用
Oct 22 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
Dec 27 Javascript
Node.js引入UIBootstrap的方法示例
May 11 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
vue3不同环境下实现配置代理
May 25 Vue.js
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+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
帝国cms常用标签汇总
2015/07/06 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
2015/12/14 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
vue实现分页组件
2020/06/16 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
python 实现dict转json并保存文件
2019/12/05 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python微信公众号开发简单流程实现
2020/03/09 Python
python代码如何注释
2020/06/01 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
接口的多继承会带来哪些问题
2015/08/17 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
庆中秋节主题活动方案
2014/02/03 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
仰望星空观后感
2015/06/10 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL