对JS中操作符的一些理解:[]= =![] =>true,{}= =!{}=>false

在这里插入图片描述
首先通过一个典型的例题来加深对上面方法的理解:[]= =![] =>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字符索引比较。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值