JavaScript == 與 === 的差異 一般相等/嚴格相等

前言

相信大家都知道 JavaScript 是一種弱型別的語言吧

而其中的 == 以及 === 大家知道他們的差異嗎?

一般相等/嚴格相等的差異

== (一般相等)

也就是我們最常用到的等於

但其實在後面的判斷中並不是只有等於而已,而是會將型別轉換來進行比較

舉例來說,

1==true
1=='1'

大家會發現這些都會等於 true

這時候我們要先來看一下型態

三個型態其實各不相同,但在 == 運算子 (一般比較) 會將他們轉成相同型態再來進行比較

boolean 以及 string 都會被轉成 number來進行比較,參考的聯結有提供了完整的如何轉換 ⬇

=== 嚴格比較

了解了一般比較,嚴格比較就很好理解了

就是不幫你轉換型態,你是什麼型態就是什麼型態

1===true
1==='1'

所以一樣的範例拿來比較只會得到 false 的結果

各自運用的地方

若是可以確認輸入型別的地方,其實就是都可以用的(要是需要簡單的轉型就用 ==,不需要就可以用 ===)

需要考量到多種型別的話,則最好使用嚴格比較(===) 以防出現混淆

雖然使用 == 的彈性較大,卻有可能會出現一些隱患,像是在查詢某些問題時不直覺,可能不會認知到型別不一


結論

永遠在還著以前的代辦清單啊

這一篇文章想寫很久了,卻一直擱置…

最早就是因為在查 == 的問題,卻發現型別不一致,也就是這次提到的缺點

看更專業的文章,這次也參考了部分資訊 : 相等比較 – JavaScript | MDN (mozilla.org)

其他筆記們

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *