javascript运算符之相等与严格相等
来源:互联网 发布:jboss 1099端口 编辑:程序博客网 时间:2024/05/17 08:34
例:
var a=[1,2,3];
var b=[1,2,3];
var c=a;
var result=[a==b,a==c,a==a];
看到上述代码,你认为result的结果是什么?[true,true,true]?但是,令我们大跌眼镜的是result的结果为[false,true,true]。
这又是为什么呢?
因为javascript中对象的比较是引用的比较,而不是值的比较,所以a==c为真,a==b为假。也就是说,对象只和其本身是相等的,与其它任何对象都不相等。所以,a==a也为true。
接下来,我们来详细说说严格相等运算符===。
在执行严格相等运算(===)时,首先会计算操作符的值,然后比较这两个值(即使类型不一致也不会进行转换)。
(1).如果两操作数的类型不同,则不相等;
(2).操作数中只要出现NaN,则不相等;
(3).二者都为null或undefined,则相等;一方为null,一方为undefined,则不相等;
(4).操作数都为true或false时,则相等;
(5).操作数都为数字,且数值相等时,则相等;并且-0===0为true;
(6).操作数都为字符串,且各个位上的字符都相等时,字符串相等;
(7).两个引用指向同一个对象、函数或数组时,则相等。
相等运算符(==),它的比较并不严格,当操作数的类型一致时,它会按照严格相等的规则进行比较,但当操作数的类型不一致时,它会尝试进行类型转换。
(1).一个是null,一个是undefined时,则相等;
(2).一个值是字符串,一个值是数字时,会首先将字符串转换为数字,然后用转换之后的值进行比较;
(3).如果其中的一个操作数为true或false,则会将其先转换为1或0再比较;
(4).如果一个值为对象,另一个值为数字或是字符串,则会先将对象转换为原始值,再进行比较;
(5).其它不同类型之间的比较均为不相等。
那现在再看一个判断相等的结果:“true”==1,结果为true或false呢?
仔细想想,其实结果为false。字符型的true并不能转换为一个数字,所以结果就会返回一个NaN。
- javascript运算符之相等与严格相等
- JavaScript中的宽松相等和严格相等
- javaScript相等运算符==
- JavaScript等同和相等运算符
- javascript: 相等和不等运算符
- 深入相等运算符
- javascript相等运算符与等同运算符(转自www.jqueryba.com)
- javascript高级程序设计之相等操作符
- 【js】严格相等和抽象相等
- 【学习笔记】JavaScript编码规范-比较运算符&相等
- Javascript 中的相等与不等
- Javascript 中的相等与不等
- Javascript 中的相等与不等
- 相等操作符运算规则
- js中的相等与不等运算
- js中的相等与不等运算
- javascript 相等运算符(==)和等同运算符(===)
- javascript中的相等运算符(==)和等同运算符(===)
- ocp-v13-044
- 规范变换
- C语言项目总结-通讯录
- 顺时针打印矩阵
- 关于碰到开机自动弹出图片查看器和右下角弹游戏各种广告的解决方法
- javascript运算符之相等与严格相等
- 【static&extern】static和extern的区别
- ocp-v13-045
- 黑马程序员————JAVA之GUI
- 杭电acm1271 整数对
- 系统学习ARM之六 --异常处理
- 今天和大家分享下OC中的类的存储位置
- 差分约束POJ1201NIntervals解题报告
- 【java】cookie和session