对于==来说,如果数据类型不同,就会进行隐式类型转换。

  • 首先判断是否在对比 nullundefined,是的话就会返回 true;
  • 判断其中一方是否为 string ,在与 number进行比较,是的话就会将字符串转换为 number
  • 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断;
  • 判断其中一方是否为 object ,是的话就会把 object 转为原始类型再进行判断;转为原始类型时会调用  valueOf()或 toString();

其流程图如下:

因此[] == ![]是这么来的:

  • 对象的非空引用是true,只有null空引用为false
  • 右边的![]!true,得到false
  • false转为Number是0
  • true转为0
  • 左边[].toString()得到``
  • Number(``)得到0
  • 0 == 0,返回true

最新文章

  1. ASP.NET Web API 控制器创建过程(二)
  2. 如果你觉得我的博客对你有帮助,请帮忙加点我所在团队博客访问量http://home.cnblogs.com/u/newbe/
  3. remot debug
  4. 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频
  5. IPAdr.exe破解[练手]
  6. Java——银行业务调度系统
  7. 安装package.js
  8. python 内置函数 getattr
  9. VC++编程之字符串解惑--Unicode & MBCS
  10. mvc 下的 signalR使用小结
  11. Windows实用快捷键
  12. vue开发中遇到的问题集锦(2)
  13. [SDOI2017]遗忘的集合
  14. MongoDB从入门到优化
  15. Python 进行查询日志查询条件分析
  16. MySQL 组提交(group commit)
  17. yolov3源码darknet在vscode下调试
  18. [转]使用 Angular CLI 和 ng-packagr 构建一个标准的 Angular 组件库
  19. 解决spring boot JavaMailSender部分收件人错误导致发送失败的问题
  20. FFmpeg X264的preset和tune

热门文章

  1. 实现Nginx代理WSS协议
  2. VC 为程序创建唯一标识
  3. Linux文件系统与日志分析的了解
  4. Jest_JavaScript测试框架
  5. Feign实现动态URL
  6. VNCTF 2022 cm cm1 RE复现
  7. logger模块和re模块总结
  8. 我们一起来学Shell - shell的数组
  9. 手写一个springboot starter
  10. Java老码农心得:卷了这么多年,您真的卷会了吗?