[]==![] 解析过程

Posted 高捍得

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[]==![] 解析过程相关的知识,希望对你有一定的参考价值。

1.  !优先级高于== 所以先执行![].

根据标准:

The production UnaryExpression : ! UnaryExpression is evaluated as follows:

  1. Let expr be the result of evaluating UnaryExpression.

  2. Let oldValue be ToBoolean(GetValue(expr)).

  3. If oldValue is true, return false.

  4. Return true.

  ![] 相当于 false;此时 []==![] 等价于 []==false

2. []==false;

根据标准:

  1. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.

  2. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).

 此时, []==false 等价于  []==0;

3.[]==0;

根据标准:

    1. 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;

根据标准:

    1. If Type(x) is String and Type(y) is Number,
      return the result of the comparison ToNumber(x) == y.

   根据 ToNumber()  http://es5.github.io/index.html#x9.3

    "" 被转成0

   此时 ""==0 等价于 0==0;

返回true

 

 

 

 

 

  

 

以上是关于[]==![] 解析过程的主要内容,如果未能解决你的问题,请参考以下文章

无法解析片段中的 findViewById [重复]

无法解析片段中的 ViewModelProvider 构造?

Relay.js 没有正确解析组合片段

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

解释器在解析JavaScript代码时对于这两种方式

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration