=== 和 ==的區別
我們在其它的語言裏判斷相等都是使用==, 我們在JS裏面第一次接觸到"===",也是感覺挺好奇的。
=== 表示恆等,首先比較兩邊的變量數據類型是否相等,其次比較兩邊的變量的數值是否相等;
(1)如果類型不同,就一定不相等
(2)如果兩個都是數值,並且是同一個值,那麼相等;如果其中至少一個是NaN,那麼不相等。(判斷一個值是否是NaN,只能使用isNaN( ) 來判斷)
(3)如果兩個都是字符串,每個位置的字符都一樣,那麼相等,否則不相等。
(4)如果兩個值都是true,或是false,那麼相等
(5)如果兩個值都引用同一個對象或是函數,那麼相等,否則不相等
(6)如果兩個值都是null,或是undefined,那麼相等
== 表示相等即僅僅比較兩邊變量的數值是否相等
(1)如果兩個值類型相同,再進行三個等號(===)的比較
(2)如果兩個值類型不同,也有可能相等,需根據以下規則進行類型轉換在比較:
1)如果一個是null,一個是undefined,那麼相等
2)如果一個是字符串,一個是數值,把字符串轉換成數值之後再進行比較
建議
建議儘量都使用===,原因如下:
一致性:使用==對一致性沒有任何好處,那麼爲什麼不避免使用呢。
簡單和性能:一般來說,===是最簡單的操作符,因爲它不用進行類型轉換,
JavaScript引擎的性能參差不齊,但是在大部分瀏覽器中=比速度更快。
即使會自動轉換,但並不總是按你需要的方式轉換:如6+“21”;//“621”。