[]==![] 解析过程
Posted 高捍得
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[]==![] 解析过程相关的知识,希望对你有一定的参考价值。
1. !优先级高于== 所以先执行![].
根据标准:
The production UnaryExpression : !
UnaryExpression is evaluated as follows:
-
Let expr be the result of evaluating UnaryExpression.
-
If oldValue is true, return false.
-
Return true.
![] 相当于 false;此时 []==![] 等价于 []==false
2. []==false;
根据标准:
-
If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
-
If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
此时, []==false 等价于 []==0;
3.[]==0;
根据标准:
-
If Type(x) is either String or Number and Type(y) is Object,
return the result of the comparison x == ToPrimitive(y).
ToPrimitive : http://es5.github.io/index.html#x9.1
如果 最终 []==0 等价于 ""==0;
4.""==0;
根据标准:
根据 ToNumber() http://es5.github.io/index.html#x9.3
"" 被转成0
此时 ""==0 等价于 0==0;
返回true
以上是关于[]==![] 解析过程的主要内容,如果未能解决你的问题,请参考以下文章
无法解析片段中的 ViewModelProvider 构造?
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段