javascript中的恒等是指兩個值不僅值相同,還要類型相同。因此,恒等在javascript中相當(dāng)于是一種更加嚴(yán)格的等于。
以下是一些例子:
1===1 // true
"hello"==="hello" // true
1==="1" // false
true===1 // false
在第一個例子中,1和1都是數(shù)字,并且類型相同,因此它們相等。
在第二個例子中,"hello"和"hello"都是字符串,并且類型相同,因此它們相等。
在第三個例子中,1是數(shù)字而"1"是字符串,它們的類型不同,因此它們不相等。
在最后一個例子中,true是布爾值,而1是數(shù)字,它們的類型也不同,因此它們不相等。
由于javascript是一種弱類型語言,它不會在比較值時考慮類型。因此,使用雙等于比較時可能會出現(xiàn)一些奇怪的情況:
1=="1" // true
true==1 // true
"1"==true // true
在以上例子中,“1”和1實際上是相等的,因為javascript會將字符串轉(zhuǎn)換為數(shù)字。同樣,true也可以被轉(zhuǎn)換為數(shù)字1,因此它和1也相等。然后,“1”又可以被轉(zhuǎn)換為布爾值true,因此它和true也相等。
因此,在javascript中,如果想要比較值并且要求值和類型都相等,恒等是一個更加保險的選擇。否則,可能會出現(xiàn)一些令人驚訝的結(jié)果。
function foo(bar) {
if (bar===true) {
console.log("bar是真的!");
} else {
console.log("bar不是真的!");
}
}
例如,在以上代碼中,如果要檢查bar是否是真的,使用恒等是非常重要的。如果使用雙等于,那么當(dāng)傳入的bar是數(shù)字1或字符串"true"時,它們會被認(rèn)為是真的,這可能會造成不必要的混亂。
因此,使用恒等時,確保兩個值不僅值相同,還要類型相同。這是一種非常重要的好習(xí)慣,可以讓我們避免很多不必要的錯誤。