JavaScript 中的 != 運(yùn)算符經(jīng)常被用來(lái)比較兩個(gè)變量是否不等,但是有些開發(fā)者往往會(huì)將其和 !== 搞混。在這篇文章中,我們將討論 != 的實(shí)際用法,以及與 === 的區(qū)別。
首先,讓我們看一下 != 的用法。
let num = 5;
let str = "5";
if (num != str) {
console.log("num 不等于 str");
} else {
console.log("num 等于 str");
}
在以上代碼中,我們將一個(gè)數(shù)字 5 賦值給了變量 num,將字符串 "5" 賦值給了變量 str。在 if 語(yǔ)句中,我們使用 != 來(lái)比較這兩個(gè)變量是否相等。由于 != 在比較時(shí)會(huì)自動(dòng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換,因此它判斷 num 不等于 str。
現(xiàn)在,讓我們看一下與 !== 的區(qū)別。
let num = 5;
let str = "5";
if (num !== str) {
console.log("num 不等于 str");
} else {
console.log("num 等于 str");
}
在以上代碼中,我們使用 !== 進(jìn)行了相同的比較。注意,!== 執(zhí)行嚴(yán)格的比較,不會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換。因此,在這段代碼中,num 等于 5,str 等于 "5",所以它們不嚴(yán)格相等,在 if 語(yǔ)句中會(huì)打印出 "num 不等于 str"。
當(dāng)我們使用 != 時(shí),我們?cè)试S JavaScript 自動(dòng)將變量轉(zhuǎn)換為相容的類型。這樣可能會(huì)導(dǎo)致我們意想不到的結(jié)果。例如:
console.log(1 == true); // 輸出 true
console.log(0 == false); // 輸出 true
在這個(gè)例子中,我們可以看到當(dāng)使用 != 運(yùn)算符時(shí),JavaScript 會(huì)將數(shù)字 1 和 true 轉(zhuǎn)換成相同的類型,導(dǎo)致兩者相等。同樣的,數(shù)字 0 和 false 也被轉(zhuǎn)換成相同的類型而相等。這顯然不是我們想要的行為。
總之,盡管 != 通常被用于比較變量是否不相等,但需要注意它涉及到自動(dòng)類型轉(zhuǎn)換。如果我們需要進(jìn)行嚴(yán)格的比較,應(yīng)該使用 !== 運(yùn)算符。