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 相关文章推荐
How to Auto Include a Javascript File
Feb 02 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
javascript排序函数实现数字排序
Jun 26 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
Jun 15 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
Dec 08 Javascript
jquery图片放大镜效果
Jun 23 jQuery
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
用JS创建一个录屏功能
Nov 11 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实现小型站点广告管理(修正版)
2006/10/09 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
python转换摩斯密码示例
2014/02/16 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
django url到views参数传递的实例
2019/07/19 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python截图并保存的具体实例
2021/01/14 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
中英文自我评价语句
2013/12/20 职场文书
银行类自荐信
2014/02/04 职场文书
暑期研修感言
2014/02/17 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
暖春观后感
2015/06/08 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS