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 相关文章推荐
JavaScript延迟加载
Mar 09 Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
JavaScript访问CSS属性的几种方式介绍
Jul 21 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
Jun 15 Javascript
jquery validate表单验证插件
Sep 06 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
Dec 06 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 危险函数解释 分析
2009/04/22 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
QQ登录简单实现代码
2021/03/09 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
jquery实现按Enter键触发事件示例
2013/09/10 Javascript
js 通用订单代码
2013/12/23 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
简单解决Python文件中文编码问题
2015/11/22 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
Python错误处理操作示例
2018/07/18 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
应聘收银员个人的求职信
2013/11/30 职场文书
施工班组长岗位职责
2014/01/05 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Python中递归以及递归遍历目录详解
2021/10/24 Python