javaScript ==运算符的原理

引题:
请问以下表达式的值是多少?

null == undefined
0 == false
1 == true
0 == undefined
1 == undefined
0 == null
1 == null

以下x为左侧表达式的值 ,y为右侧表达式的值,z表示表达式判断的的另一侧,例如:
‘1’ == true
x === ‘1’
y === true
typeof x === ‘string’ 则 z = y,typeof y === 'boolean’则 z = x
其内部实现步骤:

  1. 判断xy是否是正常的值,如果不是则中断执行报错
  2. 运行 === 执行严格相等运算 x === y,相同则返回真,假则向下执行
  3. 判断x===undefined且y ===null,或者x ===null且y===undefined,如果符合条件则返回真,否则向下执行
  4. 判断 typeof x | y === number,且typeofz=== (string | number) ,则number(z)重新调用==相等运算符,并返回其结果
  5. 判断 typeof x | y === string,且typeof z=== (string | number) ,则number(z)重新调用==相等运算符,并返回其结果
  6. 如果typeof x | y === boolean,则number(z)重新调用==相等运算符,并返回其结果
  7. 如果typeof x | y === string | symbol | number,typeof z=== object,则返回x | y == toPrimitive(z)的结果
  8. 返回false

总结

优先执行对象,调用ToPrimitive()
其次执行数字,调用Number()
碰到布尔,调用number
碰到字符串或symbol,调用toString()

这里引题的答案就不说了,大家可以根据以上的规律来分析一下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值