1. 程式人生 > 實用技巧 >1.21 null、undefined運算時進行的隱式轉換

1.21 null、undefined運算時進行的隱式轉換

  • 當進行-(減)、*(乘)、/(除)、取餘(%)操作時,如果有不是數值的運算元,則先在後臺使用Number()函式將其轉換為數值。
    (特殊:Number([x])=x; 而Number({})、Number([x,y],...)為NaN)
<script>
    console.log('Number(null):', Number(null));
    //Number(null): 0
    console.log('Number(undefined):', Number(undefined));
    //Number(undefined): NaN
  • 當進行+(加)操作時,如果任一運算元是物件、數值、布林值則呼叫它們自身的toString()方法;
    對於undefined和null則呼叫String()函式,將其轉換為'undefined'和'null'
    console.log('String(null):', String(null), typeof String(null));
    //String(null): null string
    console.log('String(undefined):', String(undefined), typeof String(undefined));
    //String(undefined): undefined string
  </script>
  • 當進行==操作符時,遇到undefined和null不會轉換型別。對於其它型別可能經歷(valueOf、toString、Number方法最後比較數值;如果兩個數是物件則比較是否是同一個物件)