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 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
jquery 页面全选框实践代码
Apr 02 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
window.onload与$(document).ready()的区别分析
May 30 Javascript
jQuery中$(function() {});问题详解
Aug 10 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
jQuery EasyUI封装简化操作
Sep 18 Javascript
利用Console来Debug的10个高级技巧汇总
Mar 26 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 Javascript
angular组件间传值测试的方法详解
May 07 Javascript
详解nginx配置vue h5 history去除#号
Nov 09 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
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
基于js disabled="false"不起作用的解决办法
2013/06/26 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
nodejs模块学习之connect解析
2017/07/05 NodeJs
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python 反向输出字符串的方法
2018/07/16 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python3 集合set入门基础
2020/02/10 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
数据库专业英语
2012/11/30 面试题
财务人员个人自荐信范文
2013/09/26 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2014年招商工作总结
2014/11/22 职场文书
喋血孤城观后感
2015/06/08 职场文书
中学总务处工作总结
2015/08/12 职场文书
小学体育教学随笔
2015/08/14 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
严以律己学习心得体会
2016/01/13 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python