JS第4章——表达式和运算符

一、原始表达式

二、对象和数组的初始化表达式

三、函数定义表达式

四、属性访问表达式

五、调用表达式

六、对象创建表达式

七、运算符

八、算术表达式

九、关系表达式

  1、相等符和不相等符

    相等运算符:==,===

    不相等运算符:!=,!==

    严格相等运算符===

    运算过程:首先计算其操作数的值,然后再比较这两个值,比较过程中没有任何的类型转换。

    不等的情况:

         (1) 如果两个值类型不同,则它们不相等

         (2)   如果两个值都是null或都是undefined,则它们不相等

         (3)   如果其中一个值是NaN,或者两个值都是NaN,则它们不相等

    相等的情况:

   (1)   如果两个值都是布尔值true或者布尔值false,则它们相等

   (2)   如果两个值都是数字且数值相等,则它们相等。(注:0和-0也相等)

   (3)   如果两个值是字符串且长度和内容均相同时,则它们相等

   (4)   如果两个引用值指向同一个对象、数组or函数,则它们相等

   一般相等运算符==

   运算过程:和恒等运算符相似,但一般相等运算符的比较并不严格。如果两个操作数不是同一类型,那么一般的相等运算符会尝试进行一些类型转换,然后进行比较

   (1)如果两个操作数的类型相同,则和严格相等运算符的比较规则一样。

      如果严格相等,那么比较结果相等;

      如果它们不严格相等,则比较结果为不相等。

   (2)如果两个操作数的类型不同,“==”相等运算符也可能认为它们相等。检测相等时将会遵守如下规则和类型转换:

      ①如果一个值是null,另一个是undefined,则它们相等

      ②如果一个值是数字,另一个是字符串,现将字符串转换为数字,然后使用转换后的值进行比较

      ③如果其中一个值时true,则将其转换为1后再进行比较;如果其中一个值时false,则将其转换为0后再进行比较。

      ④如果一个值是对象,另一个值是数字or字符串。则转换规则是讲对象转换为原始值,然后再进行比较(详见犀牛书3.8.3)

 

  2、instance of运算符

  

posted @ 2017-02-28 14:20  SYang_Summer  阅读(157)  评论(0编辑  收藏  举报