JavaScript進階系列-型別轉換、隱式型別轉換
ECMAScript 的 Boolean 值、數字和字串的原始值都是偽物件,這意味著它們可以使用原型物件上面的屬性和方法。
ECMAScript 定義所有物件都有 toString() 方法,無論它是偽物件,還是真物件。
let obj = {name:'obj'}; obj.toString(); // [object Object] let arr = [1,2]; arr.toString(); // "1,2" function func(){} func.toString() // "function func(){}" false.toString() // "false" 複製程式碼
引數 | 結果 |
---|---|
undefined | "undefined" |
null | "null" |
boolean | "true" 或者 "false" |
number | 數字作為字串。比如,"1.765" |
string | 無需轉換 |
[] | "" |
[5,2] | "5,2" |
{} | "[object Object]" |
Symbol() | "Symbol()" |
轉換為數字
ECMAScript 提供了兩種把非數字的原始值轉換成數字的方法,即 parseInt() 和 parseFloat() 。 只有對 String 型別呼叫這些方法,它們才能正確執行;對其他型別返回的都是 NaN。
引數 | 結果 |
---|---|
undefined | NaN |
null | +0 |
boolean | true被轉換為1,false轉換為+0 |
number | 無需轉換 |
string | 由字串解析為數字。例如,"324"被轉換為324 |
[] | +0 |
[5] | 5 |
{} | NaN |
Symbol | 報錯 |
轉換為 Boolean
引數 | 結果 |
---|---|
undefined | false |
null | false |
boolean | 無需轉換 |
number | +0,-0轉換為false,其他為true |
string | ''為false,其他為true |
[] | true |
{} | true |
Symbol | true |
強制型別轉換
ECMAScript 中可用的 3 種強制型別轉換如下:
- Boolean(value) - 把給定的值轉換成 Boolean 型;
- Number(value) - 把給定的值轉換成數字(可以是整數或浮點數);
- String(value) - 把給定的值轉換成字串;
Boolean() 函式
當要轉換的值是至少有一個字元的字串、非 0 數字或物件時,Boolean() 函式將返回 true。如果該值是空字串、數字 0、undefined 或 null、NaN,它將返回 false。
Number() 函式
Number() 函式的強制型別轉換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉換的是整個值,而不是部分值。
String() 函式
String() 它可把任何值轉換成字串。
隱式型別轉換
JavaScript 預設自動轉換,沒有任何警告 隱式型別轉換常見場景
自動轉換 Boolean
例如 if 語句 或者其他需要 Boolean 的地方
if (表示式){} 複製程式碼
字串
- 運算子其中一個運算元是字串的話,會進行連線字串的操作。
1+'2' // '12' 複製程式碼
false
Boolean('false') // true Boolean('undefined') // true // 這裡他們都是字串 複製程式碼