[] == ![] //为True

第一步 转成[] == false

根据 MDN Web 文档-运算符优先级:[https://developer.mozilla.org...
](https://developer.mozilla.org...

!的优先级为16 ,=的优先级为10!的优先级更高,所以先运行![]false

[] == false

第二步 转成[] == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果其中一个操作数为布尔类型,那么布尔操作数如果为true,那么会转换为1,如果为false,会转换为整数0,即0。
所以![]false0.

[] == 0

第三步 转成"" == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操作符会尝试通过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。
所以[].valueOf().toString()""

"" == 0

第四步 转成0 == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。
Number("")0

0 == 0

最后0==0True,所以[] == ![]Ture

其他链接

  • https://raoenhui.github.io/js/2018/09/22/compare1/
  • https://raoenhui.github.io/js/2018/09/23/compare2/
  • https://raoenhui.github.io/js/2018/09/28/compare3/

Happy coding .. :)

js双等号探索(一): [] == ![]为Ture ?相关推荐

  1. Java双等号,Equals(),HashCode()小结

    默认情况 - 双等号==,比较的是内存地址. - equals(),默认比较的是内存地址. - hashCode(),默认返回的是object的内存地址. String中方法改写的情况 经常会遇到需要 ...

  2. javascript --- [有趣的条件]双等号的隐式调用和数据劫持

    1 双等号的隐式调用和数据劫持 求下面条件,在a为什么样时,等号成立 if(a == 1 && a == 2 && a == 3){console.log('等号成立' ...

  3. java 双等号(==) 与equals方法的介绍和区别

    java 双等号(==) 与equals方法的介绍和区别 1.基本数据类型与equals方法 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Ob ...

  4. java 双等号(==) 与equals方法的使用区别

    java 双等号(==) 与equals方法的区别 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Object类中比较的也是地址,因为在低层也是 ...

  5. python中双等号与单等号的区别_双等号 == 与单等号 =

    最常见的比较是双等号(==).==运算符与=运算符不同. =运算符是赋值运算符,用于设置值.==运算符是比较运算符,它检查两个值是否相等. 以下代码评估两个变量是否彼此相等. 示例代码 #includ ...

  6. 等号(=),双等号(==)还有三等号(===)的使用与区别

    1.一个等号(=) $a = 1;表示把1赋值给变量啊 echo $a ; //输出 1 2.双等号(==) $a = null; $b = ''; $c= 1; 双等号表示等于 echo  ($a= ...

  7. 怎么做到new String(abc) == new String(abc)双等号为true呢?不是使用equals哦

    正常情况 如果按照正常情况,你面试的时候,看到这个代码,你肯定会说:结果是false. 如果我要他们是true,应该怎么做呢?有什么方法吗? String str4 = new String(&quo ...

  8. 稀土掘金与英特尔联合举办首届未来大会,技术、商业双视角探索产业数字化转型

    1月6日,由稀土掘金技术社区与英特尔联合发起的第一届「掘金未来大会」在北京震撼开幕,本次大会以 "与开发者同行,掘金数智未来" 为主题,线上线下联动,从技术和商业双视角探索产业数字 ...

  9. 2021-09-28 双等号==和三等号===的区别

    双等号和三等号的区别:双等号只需要大小相等,三等号大小,类型都要相等 console.log(2 == 2, 2 == "2"); //true tureconsole.log(2 ...

最新文章

  1. lisp填写明细表对话框_用AutoLisp定制acad的对话框
  2. 探寻繁杂定时任务的解决方案:分布式任务调度系统
  3. 乾云服务器虚拟化,乾云服务器虚拟化系统
  4. 使用Modernizr探测HTML5/CSS3新特性
  5. 上传问题分析--目录分离
  6. 5.4.2 Using Hibernate templates
  7. ImmunityDebugger 学习
  8. 管理感悟:下结论的套路
  9. 写了个鼠标键盘模拟器,希望对大家有用哈!
  10. 红米note2移动4g在哪里显示无服务器,小米 红米note2(移动版) 解锁教程
  11. java batter_android电池管理系统从上层的java到底层驱动的调用(转载)
  12. 【原创】音乐的本质其实是气息,音乐更具情绪感染力和共鸣力是因为?
  13. react-native >0.69版本 链接@ant-design/icons-react-native
  14. JMeter常用函数整理
  15. 隐私计算秘密学-秘密分享
  16. 【天梯赛】L2-039 清点代码库** (25 point(s))
  17. FleaPHP 的 Ajax 支持和 WebControls
  18. 董树义 近代微波测量技术_微波和微波信号的分析方法介绍
  19. ZCMU-1133- 第九章:致我们终将逝去的青春
  20. 【iCore2双核心板视频教程三】iM_LAN 100M 以太网模块TCP压力测试(更新视频教程)...

热门文章

  1. 《Python语言程序设计》——2.10 增强型赋值运算符
  2. 精益业务分析宣言解读
  3. 非常详细的测试unity与android之间的通讯操作
  4. 如何在xaml文件中操作用户在后台代码定义的类(1)
  5. 深入解析Spring架构与设计原理-AOP
  6. 文本占用的高度和范围
  7. sysaux表空间数据库块损坏/游离块的修复
  8. VMware Workstation 更改语言
  9. onvif规范的实现:onvif开发常用调试方法 和常见的segmentation fault错误
  10. CentOS 6 安装极点五笔拼音输入法