==
==
:稱爲 等值符(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
- 對於對象、數組、函數(三者均爲對象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,對象相等且值也相等
- 如果等號兩邊出現了null或undefined,null和undefined除了和自己相等,還彼此相等
undefined === undefined //得到true
null === null //得到true
undefined === null //得到false
- 注意:NaN===NaN
//返回false,NaN和所有值包括自己都不相等即返回false。
NaN===NaN //返回false,NaN和所有值包括自己都不相等
/*用isNaN()判斷是否爲NaN*/
isNaN(NaN) //得到true