JavaScript中的操作符==与===介绍


Posted in Javascript onDecember 31, 2014

JavaScript中,==与===操作符均可用于判断两个值是否相等;不同之处在于,如果进行判断的两个值类型不一致,===操作符会直接返回false,而==操作符则会在类型转换后再进行判断。详细的判断规则如下:

===操作符的判断规则

1.如果两个值的类型不一致,返回false。
2.如果两个值的类型一致,值一致,返回true。NaN是一个特例,NaN===NaN返回false。
3.如果两个值均为object类型,那么与Java一样,除非两者引用一致(reference指向同一个对象地址),不然即使object中的内容完全一样,也认为这两个值不一致,相应的操作将返回false。比如,新建两个内容完全一样的数组,对它们进行===操作后返回结果为false — 虽然它们的内容完全一样,但还是属于两个不同的对象。
4.0===-0返回true。

==操作符的判断规则

==操作符会将值进行类型转换后再进行比较,其类型转换遵循以下原则:优先转换成number后进行比较,Date对象则优先转换成string后进行比较。具体判断规则如下:

1.如果两个值类型一致,执行===操作后返回。
2.null==undefined为true。
3.true将转换成1后进行比较,false将转换成0后进行比较。
4.如果其中一个值为对象,则将其转换成number后再进行比较,Date对象除外。
5.如果其中一个值为Date对象,则将其转换成string后再进行比较。

实验

console.log("3" === 3);//false

console.log(NaN === NaN);//false

var a = {x:1, y:2};

var b = {x:1, y:2};

var c = a;

console.log(a === b);//false

console.log(a === c);//true

console.log(0 === -0);//true
console.log("3" == 3);//true

console.log(null == undefined);//true

console.log(true == 1);//true

console.log(true == 9);//false
console.log([9] == 9);//true

console.log([9] == "9");//true
var d = new Date();

var s = d.toString();

var n = d.valueOf();

console.log(d == s);//true

console.log(d == n);//false
Javascript 相关文章推荐
走出JavaScript初学困境—js初学
Dec 29 Javascript
js变换显示图片的实例
Apr 16 Javascript
javascript获取URL参数与参数值的示例代码
Dec 20 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
vue-swiper的使用教程
Aug 30 Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 17 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
原生js拖拽实现图形伸缩效果
Feb 10 Javascript
基于Vue实现微前端的示例代码
Apr 24 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 #Javascript
JavaScript中的比较操作符>、=、
Dec 31 #Javascript
javascript 操作符(~、&、|、^、)使用案例
Dec 31 #Javascript
JavaScript中的逻辑判断符&&、||与!介绍
Dec 31 #Javascript
JavaScript中的eval()函数使用介绍
Dec 31 #Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
Dec 31 #Javascript
JavaScript中的异常捕捉介绍
Dec 31 #Javascript
You might like
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php 问卷调查结果统计
2015/10/08 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
createElement动态创建HTML对象脚本代码
2008/11/24 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
jquery each()源代码
2011/02/14 Javascript
js style动态设置table高度
2014/10/21 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
python opencv实现运动检测
2018/07/10 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
如何用Lucene索引数据库
2016/02/23 面试题
承诺书格式范文
2014/06/03 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
Golang数据类型和相互转换
2022/04/12 Golang