js双等号探索(一): [] == ![]为Ture ?
[] == ![] //为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。
所以![]
为false为0
.
[] == 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==0
位True
,所以[] == ![]
为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 ?相关推荐
- Java双等号,Equals(),HashCode()小结
默认情况 - 双等号==,比较的是内存地址. - equals(),默认比较的是内存地址. - hashCode(),默认返回的是object的内存地址. String中方法改写的情况 经常会遇到需要 ...
- javascript --- [有趣的条件]双等号的隐式调用和数据劫持
1 双等号的隐式调用和数据劫持 求下面条件,在a为什么样时,等号成立 if(a == 1 && a == 2 && a == 3){console.log('等号成立' ...
- java 双等号(==) 与equals方法的介绍和区别
java 双等号(==) 与equals方法的介绍和区别 1.基本数据类型与equals方法 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Ob ...
- java 双等号(==) 与equals方法的使用区别
java 双等号(==) 与equals方法的区别 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Object类中比较的也是地址,因为在低层也是 ...
- python中双等号与单等号的区别_双等号 == 与单等号 =
最常见的比较是双等号(==).==运算符与=运算符不同. =运算符是赋值运算符,用于设置值.==运算符是比较运算符,它检查两个值是否相等. 以下代码评估两个变量是否彼此相等. 示例代码 #includ ...
- 等号(=),双等号(==)还有三等号(===)的使用与区别
1.一个等号(=) $a = 1;表示把1赋值给变量啊 echo $a ; //输出 1 2.双等号(==) $a = null; $b = ''; $c= 1; 双等号表示等于 echo ($a= ...
- 怎么做到new String(abc) == new String(abc)双等号为true呢?不是使用equals哦
正常情况 如果按照正常情况,你面试的时候,看到这个代码,你肯定会说:结果是false. 如果我要他们是true,应该怎么做呢?有什么方法吗? String str4 = new String(&quo ...
- 稀土掘金与英特尔联合举办首届未来大会,技术、商业双视角探索产业数字化转型
1月6日,由稀土掘金技术社区与英特尔联合发起的第一届「掘金未来大会」在北京震撼开幕,本次大会以 "与开发者同行,掘金数智未来" 为主题,线上线下联动,从技术和商业双视角探索产业数字 ...
- 2021-09-28 双等号==和三等号===的区别
双等号和三等号的区别:双等号只需要大小相等,三等号大小,类型都要相等 console.log(2 == 2, 2 == "2"); //true tureconsole.log(2 ...
最新文章
- lisp填写明细表对话框_用AutoLisp定制acad的对话框
- 探寻繁杂定时任务的解决方案:分布式任务调度系统
- 乾云服务器虚拟化,乾云服务器虚拟化系统
- 使用Modernizr探测HTML5/CSS3新特性
- 上传问题分析--目录分离
- 5.4.2 Using Hibernate templates
- ImmunityDebugger 学习
- 管理感悟:下结论的套路
- 写了个鼠标键盘模拟器,希望对大家有用哈!
- 红米note2移动4g在哪里显示无服务器,小米 红米note2(移动版) 解锁教程
- java batter_android电池管理系统从上层的java到底层驱动的调用(转载)
- 【原创】音乐的本质其实是气息,音乐更具情绪感染力和共鸣力是因为?
- react-native >0.69版本 链接@ant-design/icons-react-native
- JMeter常用函数整理
- 隐私计算秘密学-秘密分享
- 【天梯赛】L2-039 清点代码库** (25 point(s))
- FleaPHP 的 Ajax 支持和 WebControls
- 董树义 近代微波测量技术_微波和微波信号的分析方法介绍
- ZCMU-1133- 第九章:致我们终将逝去的青春
- 【iCore2双核心板视频教程三】iM_LAN 100M 以太网模块TCP压力测试(更新视频教程)...