码迷,mamicode.com
首页 > 其他好文 > 详细

[]==![] 解析过程

时间:2017-02-24 23:55:05      阅读:346      评论:0      收藏:0      [点我收藏+]

标签:过程   ring   htm   github   let   strong   eval   mit   str   

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

 

 

 

 

 

  

 

[]==![] 解析过程

标签:过程   ring   htm   github   let   strong   eval   mit   str   

原文地址:http://www.cnblogs.com/Mr-Joe/p/4237136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!