JavaScript中的“===”是比較嚴格的相等比較運算符,它會比較值和類型,而“==”只會比較值,如果值相等,會執行弱類型轉換,使得比較正確。
舉個例子,比如以下代碼:
var name = "John"; if(name === 10){ console.log("name equals 10"); } else if(name == 10){ console.log("name equals 10, but it's a string"); } else{ console.log("name doesn't equal 10"); }
在這段代碼中,name是字符串類型,如果使用“==”,會將其轉換為數字類型,因為10是數字類型和字符串類型的相等。但如果使用“===”,不僅會比較值,還會比較類型,所以條件不成立,會執行else分支。
另外一個例子,比如以下代碼:
var x = null; var y = undefined; if(x === y){ console.log("x equals y"); } else if(x == y){ console.log("x equals y, but with type conversion"); } else{ console.log("x doesn't equal y"); }
在此代碼中,x是null,y是undefined。如果使用“==”進行比較,這兩個值會被弱類型轉換為false,因為這兩個值都是false的,所以他們是相等的。但是如果使用“===”,x和y是不同的類型,因此條件不成立,執行else分支。
此外,還有一些其他的情況,例如NaN值。NaN與自身不相等,即使使用“===”運算符。像以下這段代碼:
var a = NaN; var b = NaN; if(a === b){ console.log("a equals b"); } else{ console.log("a doesn't equal b"); }
盡管變量a與變量b都是NaN,但使用“===”運算符時,它們不會相等。
總之,“===”運算符對變量值和類型進行比較,同時也比較了null和undefined。使用時要避免使用弱類型轉換,并且在可預測的情況下首選它。
上一篇css3 勻速轉圈
下一篇php curl 加密