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 相关文章推荐
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
javascript入门教程基础篇
Nov 16 Javascript
node.js插件nodeclipse安装图文教程
Oct 19 Javascript
基于jQuery实现淡入淡出效果轮播图
Jul 31 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
Sep 14 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
Nov 07 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实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
jQuery中:empty选择器用法实例
2014/12/30 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
vue-cli3全面配置详解
2018/11/14 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
python实现目录树生成示例
2014/03/28 Python
深入浅析Python的类
2018/06/22 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
学术会议邀请函范文
2014/01/22 职场文书
大学毕业寄语大全
2014/04/10 职场文书
2014年小学工作总结
2014/11/26 职场文书
个人优缺点总结
2015/02/28 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android