絕大多數(shù)場(chǎng)合應(yīng)該使用===,只有檢測(cè)null/undefined的時(shí)候可以使用x==null,因?yàn)橐话阄覀儾粎^(qū)分null和undefined,即將x=null作為x===null || x===undefined的縮寫。
==的比較看似比較方便,比如1==‘1’,但是會(huì)埋下隱患,引入隱蔽的錯(cuò)誤,最常見的就是讓字符串和數(shù)值相加會(huì)先將數(shù)值轉(zhuǎn)化為字符串,然后進(jìn)行字符串連接,例如
if(x==10){
x+=5;
...
}
如果傳入?yún)?shù)為‘10’的話,x的結(jié)果會(huì)變成‘105’,可能會(huì)引入隱蔽的錯(cuò)誤。
總之,對(duì)于大型編程來說,==這種小便利無法與其帶來的風(fēng)險(xiǎn)相比,而且會(huì)優(yōu)先轉(zhuǎn)化為字符串進(jìn)行比較,結(jié)果可能會(huì)出乎意料之外。