1. 程式人生 > >js中===和==的區別

js中===和==的區別

至少 fine nan 如果 提交 ring turn 類型轉換 .cn

簡單描述:看老大提交的代碼,發現他的js裏邊有幾個===,然後我就第一次遇到這個東東,就簡單的查了一下,發現別有洞天,先貼代碼

代碼:

var is_method   = (typeof arg === ‘string‘)
if(arg === true && !this.length) { return false; }

說明: == 代表相同, ===代表嚴格相同, 為啥這麽說呢, 可以這麽理解: 當進行雙等號比較時候: 先檢查兩個操作數數據類型,如果相同, 則進行===比較, 如果不同, 則願意為你進行一次類型轉換, 轉換成相同類型後再進行比較, 而===比較時, 如果類型不同,直接就是false.

操作數1 == 操作數2, 操作數1 === 操作數2

比較過程:

  雙等號==:

  (1)如果兩個值類型相同,再進行三個等號(===)的比較

  (2)如果兩個值類型不同,也有可能相等,需根據以下規則進行類型轉換在比較:

    1)如果一個是null,一個是undefined,那麽相等

    2)如果一個是字符串,一個是數值,把字符串轉換成數值之後再進行比較

  三等號===:

  (1)如果類型不同,就一定不相等

  (2)如果兩個都是數值,並且是同一個值,那麽相等;如果其中至少一個是NaN,那麽不相等。(判斷一個值是否是NaN,只能使用isNaN( ) 來判斷)

  (3)如果兩個都是字符串,每個位置的字符都一樣,那麽相等,否則不相等。

  (4)如果兩個值都是true,或是false,那麽相等

  (5)如果兩個值都引用同一個對象或是函數,那麽相等,否則不相等

  (6)如果兩個值都是null,或是undefined,那麽相等

大佬鏈接:https://www.cnblogs.com/nelson-hu/p/7922731.html

js中===和==的區別