javascript中的=等号个数问题两个跟三个有什么区别


Posted in Javascript onOctober 23, 2013

一个等号就是个赋值的作用,主要问题在于两个跟三个等号的区别。
javaScript中两个等于号和三个等于号之间的区别

一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。
===表示恒等于,比较的两边要绝对的相同

alert(0 == ""); // true
alert(0 == false); // true
alert("" == false); // true

alert(0 === ""); // false
alert(0 === false); // false
alert("" === false); // false

先说 ===,这个比较简单,具体比较规则如下:
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、任何其他组合(array数组等),都[不相等]。

当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。

Javascript 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
JS操作COOKIE实现备忘记录的方法
Apr 01 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
js实现前端分页页码管理
Jan 06 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
Jan 24 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
基于javaScript的this指向总结
Jul 22 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 #Javascript
ajax与302响应代码测试
Oct 23 #Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 #Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 #Javascript
Javascript简单实现可拖动的div
Oct 22 #Javascript
将两个div左右并列显示并实现点击标题切换内容
Oct 22 #Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 #Javascript
You might like
php查看网页源代码的方法
2015/03/13 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php生成图片验证码的方法
2016/04/15 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
详解javascript高级定时器
2015/12/31 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python中的文件和目录操作实现代码
2011/03/13 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
2016/06/06 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python可视化实现代码
2019/01/15 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
服装促销活动方案
2014/02/23 职场文书
追悼会答谢词
2015/01/05 职场文书
2015年考研复习计划
2015/01/19 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Golang 链表的学习和使用
2022/04/19 Golang