[js] 请解释下[] == ![]的结果

haizhilin2013
2023-01-08 04:34:00 星期日
js
                    
                        
请解释下[] == ![]的结果
Comments per page
< Page 1 / 1 >
ShihHsing 2023-01-09 05:40:02

表达式 [] == ![] 的结果是 true

这里需要注意的是 JavaScript 中的隐式类型转换,以及运算符的优先级和结合性。

首先,右侧的 ![] 表达式会把空数组转换为布尔值 true,再进行逻辑非运算,结果为 false

然后,左侧的 [] 表达式在比较相等性之前,会被强制转换为数字类型,因为比较运算符 == 需要两边的操作数类型相同。由于数组是一个对象,对象在进行数字类型的强制转换时会先转换为字符串,再转换为数字。空数组转换为字符串后是一个空字符串 "",再转换为数字就是 0

因此,表达式变成了 0 == false,在比较相等性时,布尔值 false 会被转换为数字类型 0,所以结果为 true

扩展阅读

https://www.yuque.com/shih_hsing/nub4ks/occk2vlgnwd9zwi9?singleDoc# 《==与===区别》

学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

【关注官方公众号】 每天4:30-5:00推送
【公众号推荐】 一起折腾前端算法
【微信学习群】 备注3+1