当前位置:网站首页>JS:为什么 [] == ![] 返回 true ?
JS:为什么 [] == ![] 返回 true ?
2022-07-24 05:17:00 【蛞蝓不孤寡】
首先来看一段代码
[] == ![] //true
'' == ![] //true
1 == ![] //false
0 == ![] //true
![] == false //true
是不是有些云里雾里的?接下来看一张图片:

在这段算法里,和 [] == ![] 匹配的是条件 7,所以调用 [] == ToNumber(false) 进行比较。在 9.3 节中,ToNumber(false) 等于 0,于是比较变为 [] == 0 。
在此处因为 [] 是对象,比较过程走分支 9,依 ToPrimitive([]) == 0 比较。ToPrimitive 默认是调用 toString 方法的(依 8.2.8),于是 ToPrimitice([]) 等于空字符串。
结果,[] == ![] 的比较最后落到了 ‘’==false 上,按照 11.9.3 中的定义会依分支 5 比较 ToNumber(’’)==0 ,ToNumber(’’) 依 9.3.1 等于 0,所以结果为 true。
边栏推荐
- Basic usage of analog Addition & structure
- 8.使用二次几何体技术,在屏幕上绘制一个上小下大的柱体。
- 纯小白教程 在idea里使用Druid数据库连接池
- JS - 鼠标键盘配置 及 浏览器禁止操作
- 牛客网刷题
- JDBC encapsulates a parent class to reduce code duplication
- Cmake笔记
- 在屏幕上绘制一个圆和一个正方形,正方形在前,圆在后,可以通过键盘移动正方形,在下述情况下使得正方形只能在圆内移动
- Collation of commonly used Anaconda commands
- Create and delete databases using databases
猜你喜欢
随机推荐
Create and delete databases using databases
[[[recursion]]]
关键字_01return
【【【递归】】】
Promise_async与await
C2 random generation function seed, numpy. Random. Seed(), TF. Random. Set_ Seed Learning + reprint and sorting
关于numpy基础用法的一个整理
T 11-20
【STL】Map &unordered_ map
Add, delete, modify and check JDBC
3. 在屏幕上绘制一个底是正方形的五面锥体,锥体的底面在XOZ平面上,锥顶在Y轴上。用下图给锥体的四个三角形面做纹理映射,使得锥体的四个面分别是红橙黄绿色。
Integration of SSM
C语言进阶篇 五.动态内存管理
【dp】数字三角形
力扣、牛客网->链表相关题目(篇一)(c语言)
纯小白教程 在idea里使用Druid数据库连接池
C语言从入门到入土(二)
在屏幕上绘制一个正方形,用ice.bmp对正方形做纹理映射;在正方形后绘制一个黄色的茶壶,假设正方形是透明的,绘制茶壶与正方形的混合效果;通过A,D,W和K按键调整茶壶在X轴和Y轴的位置,具体如下
总结Browser对象
reflex









