JavaScript中的數據類型轉換

顯式類型轉換

1,Number()

  • 基本數據類型
  1. 數字即自己。
  2. 字符串,若是是純數字,則直接轉化爲數字;若是不是純數字,則轉換爲NaN;若是是空字符串,則轉化爲0;
  3. 布爾值,true轉化爲1;false轉化爲0;
  4. undefined轉化爲NaN
  5. null轉化爲0
  • 引用數據類型
  1. 先調用對象的valueOf()方法,若是返回的是基本數據類型,則調用Number()方法,結束。
  2. 先調用對象的valueOf()方法,若是返回的是複合數據類型,則繼續調用toString()方法,這時若是返回的是基本數據類型,則調用Number()方法,結束。
  3. 先調用對象的valueOf()方法,若是返回的是複合數據類型,則繼續調用toString()方法,這時若是返回的不是基本數據類型,則報錯。

 

2,String()

  • 基本數據類型
  1. 數字轉化爲字符串。
  2. 字符串爲自己。
  3. 布爾值,true轉化爲'true';false轉化爲'false';
  4. undefined 轉化爲 'undefined';
  5. null 轉化爲 'null';
  • 引用數據類型
  1. 先調用對象的toString()方法,若是返回的是基本數據類型,則調用String()方法,結束。
  2. 先調用對象的toString()方法,若是返回的是複合數據類型,則繼續調用對象的valueOf()方法,這時若是返回的是基本數據類型,則調用String()方法,結束。
  3. 先嗲用對象的toString()方法,若是返回的是複合數據類型,則繼續調用對象的valueOf()方法,這時若是返回的不是基本數據類型,則報錯。    

 

3,Boolean()

  只需記得幾項爲false的值,其餘都爲true。node

  • +0
  • -0
  • ''
  • false
  • NaN
  • undefined
  • null

 

隱式類型轉換

  • 四則運算
  1. 若是是加法和字符串同時出現時,會成爲字符串拼接。
  2. 若是是其餘狀況的+-*/,則將不是number類型的數據經過Number()轉化,轉化完成再進行數學運算。

 

  • ==
  1. 出現不一樣類型的數據比較,將不是number類型的數據經過Number()轉換,再進行判斷。
  2. 特別注意:undefined == null 返回的是true

 

  • 判斷語句
  1. 將全部判斷語句內的結果進行Boolean()轉化。
  2. 三目運算符

 

  • 邏輯運算
  1. &&,將兩邊的數據進行Boolean()轉換,返回從左往右第一個false的值。若是全爲true,則返回最後一個值。
  2. ||,將兩邊的數據進行Boolean()轉換,返回從左往右第一個true的值,若是全爲false,則返回最後一個值。

 

  • Native調用
  1. console.log()會將輸入調用String()方法,返回字符串。
  2. alert()會將輸入調用String()方法,返回字符串。

 

常見題目

  • [] + []  //''
  • [] + {}  //"[object Object]"
  • {} + []  //0,這裏將{}當作了空代碼塊,直接無視了,變成+[]
  • {} + {}  //這裏的答案在chrome和firefox中的執行結果不一樣,firefox會將前面的{}當作空代碼塊,並沒有視它成爲+{},值爲NaN;在chrome中執行,值爲"[object Object][object Object]",(具資料顯示,chrome用的是eval()方法進行解讀的。nodejs環境中值爲"[object Object][object Object]")
  • true + true  //2
  • 1 + {a:1}  //"1[object Object]"
  • undefined == null  //true
相關文章
相關標籤/搜索