[]==''返回?为什么?运算符==进行了什么操作?

栏目: 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页已经说明,下文具体说到对象转换为原始值的步骤
    }
    
}

复制代码

综合上文所说,[]=='' 属于最后一种情况.

对象转换为原始值步骤

  1. 对象转换到布尔值
直接将对象转成true
复制代码
  1. 对象转换到字符串
if(对象具有tostring()方法){
    如果返回一个原始值,javascript将这个值转换为字符串,并返回这个字符串结果。
}else if(对象具有valueOf()方法){
    会调用valueOf()方法.将其结果返回
}else{
    抛出异常
}
复制代码
  1. 对象转换到数字
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

复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

八年级数学(华东师大版)-解题升级-解题快速反应一本通(新课标)

八年级数学(华东师大版)-解题升级-解题快速反应一本通(新课标)

孙丽敏等编 / 吉林教育出版社 / 2004-6 / 10.0

本书将与知识点、重点、难点和考点有关的典型题做全析全解,是具有解题题典性质的助学读物。但本书又优于解题题典,不仅展示解题过程,更详细地提供了解题思考过程和切入点的选择方法,教方法导引思路的功能更强。 学生要提高解题能力,必须具备两个条件:一是打好基础,二是能够运动所学知识分析问题和解决问题。本书用例题解析解说知识点、重点、难点和考点,同时提供解题思考过程,在打基础中激活能力,在解题实......一起来看看 《八年级数学(华东师大版)-解题升级-解题快速反应一本通(新课标)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具