JS裡的資料型別轉換

劍指天涯心有夢發表於2018-07-14

任意型別的值轉換為字串

toString()

toString()函式返回一個表示該物件的字串

型別 返回值 例子
數值 相應的字串 var x = 1; x.toString; // 返回 "1"
字串 還是原來的值 var x = "qwer"; x.toString(); // 返回 "qwer"
布林值 true轉換為字串"true" false轉換為字串"false" var x = true; x.toString(); // 返回"true"
物件(非陣列) 返回一個型別字串: "[object,Object]" var x = {a: 1};x.toString(); // 返回"[object,Object]"
物件(陣列) 返回該陣列的字串形式 var x = [1,2,3]; x.toString(); // 返回"1,2,3"
null 報錯 Uncaught TypeError: Cannot read property 'toString' of null
undefined 報錯 Uncaught TypeError: Cannot read property 'toString' of undefined

String()

你也可以使用String函式將任意型別的值轉換為字串

型別 返回值 例子
數值 相應的字串 var x = 1; String(x); // 返回 "1"
字串 還是原來的值 var x = "qwer"; String(x); // 返回 "qwer"
布林值 true轉換為字串"true" false轉換為字串"false" var x = true; String(x); // 返回"true"
物件(非陣列) 返回一個型別字串: "[object,Object]" var x = {a: 1};String(x); // 返回"[object,Object]"
物件(陣列) 返回該陣列的字串形式 var x = [1,2,3]; String(x); // 返回"1,2,3"
null 返回字串"null" var x = null; String(x); // 返回"null"
undefined 返回字串"undefined" var x = undefined; String(x); // 返回"undefined"
  • 從上述內容可以發現toString() 方法和String() 方法不同之處在於nullundefined 的返回值不同,這是因為String() 方法的底層用的就是toString() 方法,但是String() 針對nullundefinedSymbol 會有特殊處理,所以使用String 方法將其它物件轉化為字串可以被認為是一種更加安全的做法。
  • toSting()方法可以將一個數字轉為16進位制的數字

JS裡的資料型別轉換

加法運算子

  • 加法運算子+是最常見的運算子,用來求兩個數值的和。
  • JavaScript 允許非數值的相加。
  • 比較特殊的是,如果是兩個字串相加,這時加法運算子會變成連線運算子,返回一個新的字串,將兩個原字串連線在一起。
  • 如果一個運運算元是字串,另一個運運算元是非字串,這時非字串會轉成字串,再連線在一起。
    例如:1 + "a" // "1a" 所以我們利用JS的這種特性可以更快捷的將任意型別的值轉換為字串,
    也就是用一個任意型別的值加上一個空字串
    JS裡的資料型別轉換
    和使用String()方法得到的結果是一樣的。

任意型別的值轉換為布林值

boolean()

boolean函式可以將任意型別的值轉換為布林值

轉換規則
除了以下五個值的轉換結果為false,其餘的值全為true

  • undefined
  • null
  • -0+0
  • NaN
  • ''(空字串)

當然false本身轉換為布林值肯定也是false啦。

JS裡的資料型別轉換
注意,所有物件(包括空物件)的轉換結果都是true

JS裡的資料型別轉換

取反運算子(!)

  • 取反運算子是一個感嘆號,用於將布林值變為相反值,即true變成falsefalse變成true
  • 對於非布林值,取反運算子會將其轉為布林值。
  • 如果對一個值連續做兩次取反運算,等於將其轉為對應的布林值,與Boolean函式的作用相同。這是一種常用的型別轉換的寫法。

JS裡的資料型別轉換
從圖中可以看到: !!得到的結果和Boolean()方法得到的結果是一樣的,所以我們可以用這種更便捷的方法轉換為布林值

任意型別的值轉換為數值

Number()

使用Number函式,可以將任意型別的值轉化成數值。

parseInt()

parseFloat()

減法運算子

數值運算子

相關文章