js中的 == 相等比较

假值
  • undefined
  • null
  • false
  • +0、-0、NaN
  • “”

空数组、空对象、空函数、包装了假值的对象,都是真值

1.字符串和数字之间的相等比较

字符串转为数字,再比较

2.其他类型和布尔类型之间的相等比较

布尔类型转成0或1,再比较

var x = true;
var y = "42";
x == y; // false
Type(x) 是布尔值,所以 ToNumber(x)true 强制类型转换为 1,变成 1 == "42",二者的
类型仍然不同,"42" 根据规则被强制类型转换为 42,最后变成 1 == 42,结果为 false
3.null == undefined
4.对象和非对象之间的相等比较

对象拆封

var a = 42;
var b = [ 42 ];
a == b; // true

[]会被强制类型转换为""

{} 会被强制类型转换为 “[object Object]”

5.假值的相等比较

在比较之前牢记上面四种情况

  • 字符串转数字
  • 布尔值转0/1
  • null == undefined
  • 对象拆封
false == "" // true
1.布尔值转0,成为0==""
2.字符串转数字,成为0==0

0 == [] //true
试着自己分析一下?
[]会被强制类型转换为"",0 == ""
[] + {} VS {}+[]
[] + {}; // "[object Object]"
{} + []; // 0

1. {} 出现在 + 运算符表达式中,因此它被当作一个值(空对象)来处理。 [] 会被强制类型转换为 "",而 {} 会被强制类型转换为 "[object Object]"
2. {} 被当作一个独立的空代码块(不执行任何操作)。代码块结尾不需要分号,所以这里不存在语法上的问题。最后 +[] 将 [] 显式强制类型转换为 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值