Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • [] == ![]结果是什么?

[] == ![]结果是什么?

== 中,左右两边都需要转换为数字然后进行比较。 []转换为数字为0。 ![] 首先是转换为布尔值,由于[]作为一个引用类型转换为布尔值为true, 因此![]为false,进而在转换成数字,变为0。 0 == 0 , 结果为true

简述过程

[] == ![] -> [] == false -> [] == 0 -> [].valueOf() == 0 -> [].toString() == 0 -> '' == 0 -> 0 == 0 -> true

详细点

[] == ![]

[] == !true // 将空数组这个对象类型转换成布尔值

[] == false // ! 运算符对 true 进行取反

'' == false // 对 [] 进行 ToPrimitive 操作,返回一个空对象 

0 == 0 // 将等号两边都转换成数字类型


ToPrimitive(obj, Number) ==> Number({})

如果 obj 是基本类型,直接返回
否则,调用 valueOf 方法,如果得到原始值,则返回
否则,调用 toString 方法,如果得到原始值,则返回
否则,报错

拓展

[] == ![] [] == [] 如果类型是对象,二者引用同一个对象,返回 true,反之返回 false。 [] == false [] == 0 [] == '' [] == '0' {} == '0'

Edit this page
最近更新: 2025/6/27 02:24
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人