1. 程式人生 > >JavaScript——JS中的"=="轉換規則

JavaScript——JS中的"=="轉換規則

我們知道,“=”、“==” 和“===”這三者之間是不一樣的。具體怎樣的不一樣呢?今天來說說“==”的轉換規則。

下面是一張“==”強制轉換規則表。

引數型別1 引數型別2 強制轉換
null undefined 不轉換,總是返回true
null或undefined 其它任何非null或undefined的型別 不轉換,總是返回false
原始型別:string、number或boolean Date物件 將原始型別轉換成數字;將Date物件轉換為原始型別。(優先嚐試toString方法,再嘗試valueOf方法)
原始型別:string、number或boolean 非Data物件 將原始型別轉換成數字;將非Date物件轉換為原始型別。(優先嚐試toString方法,再嘗試valueOf方法)
原始型別:string、number或boolean 原始型別:string、number或boolean 將原始型別轉換成數字

看了上面的表,我們再來細說一下==的個別常遇見的轉換規則。 

1.number型別與string型別比較,string會轉換為number型別

        '' == '0' //false
        0 == ''//true;
        0 == '0'//true
        ' \t\r\n '==0//true

2.null和undefined型別比較始終相等

null == undefined //true

我之前有寫過一篇null和undefined的區別的文章,有興趣的話可以移駕看看哦~

3.布林型別與其它任何型別進行比較,布林型別將會轉換為number型別

        false == 'false'//false
        false == '0'//true
        false == null//false
        null == undefined //true

4.number型別或string型別與object型別進行比較,number或者string型別都會轉換為object型別

        var a = 0, b = {}; 
        a == b//false

從上面的表和這四種例子來看,==的轉換規則並不夠嚴謹,如果語句需要特別嚴謹的話,珍愛生命,請使用===和!===

Biu~~~~~~~~