[]==''返回?为什么?运算符==进行了什么操作?
栏目: JavaScript · 发布时间: 7年前
内容简介:如果你看《Javascript权威指南第6版》的话,从75-76页里面关于==的转换上图的意思就是综合上文所说,[]=='' 属于最后一种情况.
如果你看《Javascript权威指南第6版》的话,从75-76页里面关于==的转换
上图的意思就是
if (两个操作数的类型是相同){
同严格相等的比较规则一样(以下文会解释严格相等的比较规则)
}
else if(两个操作数的类型不相同){
if(null == undefined) {
return true;
}else if(a是数字,b是字符串){
将字符串转换为数字,然后使用转换后的值进行比较。
}else if(两个值中有一个是true的话){
将其转换为1再进行比较
}else if(两个值中有一个是false的话){
将其转换为0再进行比较
}else if(如果一个值是对象,另一个值是数字或字符串){
将对象转换为原始值,转换规则在《Javascript权威指南第6版》书52页已经说明,下文具体说到对象转换为原始值的步骤
}
}
复制代码
综合上文所说,[]=='' 属于最后一种情况.
对象转换为原始值步骤
- 对象转换到布尔值
直接将对象转成true 复制代码
- 对象转换到字符串
if(对象具有tostring()方法){
如果返回一个原始值,javascript将这个值转换为字符串,并返回这个字符串结果。
}else if(对象具有valueOf()方法){
会调用valueOf()方法.将其结果返回
}else{
抛出异常
}
复制代码
- 对象转换到数字
if(对象具有valueOf()方法){
会调用valueOf()方法.将其结果返回
}else if(对象具有tostring()方法){
如果返回一个原始值,javascript将这个值转换为字符串,并返回这个字符串结果。
}else{
抛出异常
}
复制代码
注意对于空数组以及单个元素的数组会转换成一个数字。数组继承了默认的valueOf()方法,这个方法返回一个对象而不是一个原始值,因此数组到数字的转换则调用toString()方法。空数组转换成为空字符串,空字符串转换成为数字0.——来自《javascript权威指南》第55页。
严格相等的比较规则
上图的意思是
if (两个值类型不相同){
return false;
}
else if(null/undefined/true/false){
return true
}else if(两个值其中之一为NaN){
return false;
}else if(两个值都为数值且值相等){
return true;
}else if(两个值都为字符串且值相等 ){
return true;
}else if(两个值都指向同一个引用类型 ){
return true;
}
复制代码
常见的==比较例子
123 == 123; //true
'123' == 123; //true,'123'会转成成数值123
false == 0; //true,false 转成数值就是0
'a' == 'A'; //false,转换后的编码不一样
123 == {}; //false,valueOf()会改变
123 == NaN; //false,只要有NaN,都是false
{} == {}; //false,比较的是他们的地址,每个新创建对象的引用地址都不同
null == undefined //true
'NaN' == NaN //false
123 == NaN //false
NaN == NaN //false
false == 0 //true
true == 1 //true
true == 2 //false
undefined == 0 //false
null == 0 //false
'123' == 123 //true
'123' === 123 //false
复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hacking Growth
Sean Ellis、Morgan Brown / Crown Business / 2017-4-25 / USD 29.00
The definitive playbook by the pioneers of Growth Hacking, one of the hottest business methodologies in Silicon Valley and beyond. It seems hard to believe today, but there was a time when Airbnb w......一起来看看 《Hacking Growth》 这本书的介绍吧!