Page 57 - 你不知道的JavaScript(下卷)
P. 57

var a = [1,2,3];
                   var b = [1,2,3];
                   var c = "1,2,3";

                   a == c;      // true
                   b == c;      // true
                   a == b;      // false

                          有关 == 相等比较规则的更多信息,参见 ES5 规范(11.9.3 节)以及本系列
                         《你不知道的 JavaScript(中卷)》第一部分的第 4 章;有关值与引用的更多
                          信息,参见《你不知道的 JavaScript(中卷)》第一部分的第 2 章。


               4. 不等关系
               运算符 <,>、<= 和 >= 用于表示不等关系,在规范中被称为“关系比较”。通常来说,它们
               用于比较有序值,比如数字。3 < 4 这样的比较是很容易理解的。

               也可以比较 JavaScript 中的字符串值的不等关系,这是按照常见的字母表规则来比较的
              ("bar" < "foo")。

               类型转换呢?与 == 比较规则类似(尽管是不完全相同!)的规则可以应用于不等关系运
               算符。注意,并没有与“严格相等”=== 类似的、不允许类型转换的“严格不等关系”运
               算符。

               考虑:

                   var a = 41;
                   var b = "42";
                   var c = "43";

                   a < b;       // true
                   b < c;       // true

               上述代码发生了什么? ES5 规范中的 11.8.5 节中提到,如果 < 比较的两个值都是字符串,
               就像在 b < c 中那样,那么比较按照字典顺序(即字典中的字母表顺序)进行。如果其中
               一边或两边都不是字符串,就像在 a < b 中那样,那么这两个值的类型都转换为数字,然
               后进行普通的数字比较。

               针对类型可能不同的值之间的比较,请记住,没有“严格不等”形式可用。你最需要了解
               的一点是,当其中一个值无法转换为有效数字时的情形,如下所示:

                   var a = 42;
                   var b = "foo";

                   a < b;      // false
                   a > b;      // false
                   a == b;     // false


               34   |   第 2 章
                                图灵社区会员 avilang(1985945885@qq.com) 专享 尊重版权
   52   53   54   55   56   57   58   59   60   61   62