概述
首先通过一个典型的例题来加深对上面方法的理解:[]= =![] =>true,{}= =!{}=>false.
1.根据运算符优先级,!的优先级大于= =,所以先计算![],!将变量转换为布尔类型。注意:null,undefined,NaN,空字符串(’’)取反为true,其余都为false。以此![] = false。
2.根据上面的规则,如果有一个操作数为布尔,在比较相等性之前转换为数值,因此,![] = 0.
3.如果有一个操作数是对象,另一个操作数不是,则调用对象的valueof()方法,得到基本类型再进行比较,如果对象没有valueof(),则调用toString()。
这里需要特别注意:对于[],valueof仍为空数组,因此需要调用toString方法,[].toString()=>’’,因此,[]=’’。
4.如果一个操作数是字符串,另一个操作数是数值,则在比较之前将字符串转为数组。Number(’’)=0,因此,[] = = ! []为true。
5.同理,{} = = !{}。!{}=false=0,{}.toString = [object,object],因此{} = = !{}为false.
下面补充一下valueOf()方法:用于返回指定对象的原始值 [Object.valueOf()]
对象 | 返回值 |
---|---|
Array | 数组实例对象本身 |
Boolean | 布尔值 |
Date | 以毫秒数存储的时间,从UTC1970.1.1开始计算 |
Fuction | 函数本身 |
Number | 数字值 |
Object | 对象本身 |
String | 字符串值 |
最后简单介绍一下比较运算符:
1.如果是对象,通过toPrimitive转换对象再进行比较。
2.如果是字符串,通过Unicode字符索引比较。
最后
以上就是糊涂篮球为你收集整理的对JS中操作符的一些理解:[]= =![] =>true,{}= =!{}=>false的全部内容,希望文章能够帮你解决对JS中操作符的一些理解:[]= =![] =>true,{}= =!{}=>false所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复