===和==的區別

==

==:稱爲 等值符(equality),當兩邊的值類型相同時直接比較值是否相同,若不相同,則先轉化爲 類型相同 的值,再進行比較;

這麼理解: 當進行==比較時候: 先檢查兩個操作數數據類型,如果相同, 則進行值的比較, 如果不同, 則願意爲你進行一次類型轉換, 轉換成相同類型後再進行比較; 而===比較時, 如果類型不同,直接就是false,只當類型相同後再比較值,而不會進行類型轉換。

一個判斷值是否相等,一個是判斷值及類型是否完全相等。


==的類型轉換規則:
1)如果等號兩邊是boolean、string、number三者中任意兩者進行比較即類型不同時,優先轉換爲數字進行比較。

100==100//返回true,將“100”字符串轉換爲數字100和100比較爲true

/*數字轉換爲true/false時:0爲false,非0數字爲true*/
1==true     //返回true,將左邊的true,將它轉化爲1,再進行比較

0==false    //返回true,將右邊的false轉化爲0,再進行比較1==01//返回false,等號兩邊值得類型相同,不再轉換類型了

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

2)如果等號兩邊出現了null或undefined,null和undefined除了和自己相等,還彼此相等

undefined == undefined //返回true
null == null           //返回rue
undefined == null      //返回true

3)注意:NaN==NaN //返回false,NaN和所有值包括自己都不相等即返回false。

NaN==NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判斷是否爲NaN*/
isNaN(NaN) //得到true



===

===:稱爲 等同符(identity ),當兩邊 值的類型相同時,再直接比較值,若類型就先不相同就不再比較值,直接返回false;

100===100//返回false,類型不同,左邊爲數值,右邊爲字符串

abc===“abc”   //返回false,類型不同,左邊爲變量,右邊爲字符串

‘abc’===“abc”  //返回true,類型相同且值也相同

NaN===NaN   //返回false,NaN和所有值包括自己都不相等即返回false

false===false  //返回true
  1. 對於對象、數組、函數(三者均爲對象Object的instance):僅僅有等號
    兩邊引用了同一個對象。才返回true。引用不同對象。即使兩個對象值相 等也返回false。
var a = {test:'test'};
var b = {test:'test'}; //b另外創建的一個新對象{test:'test'},和a不是同一個對象但值相等
var c = a;             //a和c引用了同一個對象{test:'test'}
a === b    			   //得到false,對象不相等則不在比較值
a === c    			   //得到true,對象相等且值也相等
  1. 如果等號兩邊出現了null或undefined,null和undefined除了和自己相等,還彼此相等
undefined === undefined //得到true
null === null //得到true
undefined === null //得到false
  1. 注意:NaN===NaN
    //返回false,NaN和所有值包括自己都不相等即返回false。
NaN===NaN  //返回false,NaN和所有值包括自己都不相等

/*用isNaN()判斷是否爲NaN*/
isNaN(NaN) //得到true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章