### 相等操作符
* 相等和不相等
* 全等和不全等
* * * * *
#### 相等和不相等
> ECMAscript中相等操作符由兩個( == )等于號表示,如果操作數相等,則返回true,反之返回false。不相等操作符由( != )表示,如果兩個數不相等,返回true,反之返回false,這兩個操作符都會先轉換操作數(通常稱為強制類型轉換),然后再比較他們的相等性。在操作不同數據類型時,相等和不相等遵循下列基本規則:
> * 如果有一個值是布爾值,則在比較相等性之前先將其轉為數值 :false轉為0 ,true轉為1。
>* 如果一個操作數是字符串,另一個操作數數數值,在比較相等性之前會先將字符串轉為數值。
>* 如果一個操作數是對象,另一個操作數不是,則調用對象的valueOf()方法,用得到的基本類型值按照上面的規則進行比較。
>* null和undefined是相等的,因為undefined派生自null,在比較null和undefined時不能將他們轉為其他值
>* 如果又一個操作數是NaN則相等操作返回false,反之返回true。敲黑板:即使兩個操作數都是NaN,他們也不相等,因為NaN不等于任何值,包括它自己。
>* 如果兩個操作數都是對象,則比較他們是不是同一個對象,如果兩個操作數都指向一個對象,則返回true,反之返回false。
#### 全等和不全等
> 全等和不全等與相等和不相等的區別就是:全等和不全等不會轉換操作數類型,它在兩個操作數不經轉換就相等地情況下返回true,反之返回false,如下所示:
~~~
let i = 55
let b = "55"
console.log(i==b) // true 因為==比較時會將字符串“55”轉換為數字55
console.log(i===b) //false 因為不會發生類型轉換,string類型不等于number類型
~~~