任意型別的值轉換為字串
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() 方法不同之處在於
null
和undefined
的返回值不同,這是因為String() 方法的底層用的就是toString() 方法,但是String() 針對null
、undefined
、Symbol
會有特殊處理,所以使用String 方法將其它物件轉化為字串可以被認為是一種更加安全的做法。 - toSting()方法可以將一個數字轉為16進位制的數字
加法運算子
- 加法運算子
+
是最常見的運算子,用來求兩個數值的和。 - JavaScript 允許非數值的相加。
- 比較特殊的是,如果是兩個字串相加,這時加法運算子會變成連線運算子,返回一個新的字串,將兩個原字串連線在一起。
- 如果一個運運算元是字串,另一個運運算元是非字串,這時非字串會轉成字串,再連線在一起。
例如:1 + "a" // "1a"
所以我們利用JS的這種特性可以更快捷的將任意型別的值轉換為字串,
也就是用一個任意型別的值加上一個空字串 和使用String()方法得到的結果是一樣的。
任意型別的值轉換為布林值
boolean()
boolean函式可以將任意型別的值轉換為布林值
轉換規則
除了以下五個值的轉換結果為false
,其餘的值全為true
undefined
null
-0
或+0
NaN
''
(空字串)
當然false
本身轉換為布林值肯定也是false
啦。
true
取反運算子(!)
- 取反運算子是一個感嘆號,用於將布林值變為相反值,即
true
變成false
,false
變成true
。 - 對於非布林值,取反運算子會將其轉為布林值。
- 如果對一個值連續做兩次取反運算,等於將其轉為對應的布林值,與Boolean函式的作用相同。這是一種常用的型別轉換的寫法。
!!
得到的結果和Boolean()
方法得到的結果是一樣的,所以我們可以用這種更便捷的方法轉換為布林值