強制類型轉換:
1.將變量類型轉換為string類型:
通過toString()方法轉換:
var num = 10; console.log(typeof num); /*這里打印的結果為number*/ num.toString(); console.log(typeof num); /*這里打印的結果為number*/ console.log(num.toString()); /*這里打印的結果為10*/ console.log(typeof num.toString()); /*這里打印的結果為String*/ num = num.toString(); /*將變量num重新賦值*/ console.log(typeof num); /*這里打印的結果為String*/
分析代碼:
先定義了一個全局變量num並賦值為10,該變量的類型為number。
接着對該變量使用toString()方法,再次檢測該變量的數據類型依舊為number(因為沒有重新賦值)。
然后再對 num.toString() 的結果進行了打印,返回了 “10” ,且檢測其返回結果(10)的類型為String(這證明 toSring() 方法隱式return出了轉換結果,而且需要一個變量進行接收)。
最后使用已定義的num變量接收了num.toSring return出來的結果。
toString() 方法不能對 null 和 undefined 類型進行轉換,會報錯!
通過String()函數轉換:
var num = 10; console.log(typeof num); /*這里打印的結果為number*/ num = String(num); console.log(typeof num); /*這里打印的結果為string*/
通過String()函數也可以將變量類型強制轉換為String類型,同樣需要將其結果賦值給變量。
對 Number和Boolean 類型進行轉換時,實際上它內部調用的是 toString() 方法。
不同的是:String()函數還可以對 null和undefined 類型的變量進行轉換,直接返回字符串 "null" 和 "undefined" !
總結:將變量強制轉換為String類型的方法有:①toString() ②String()
2.將變量類型轉換為Number類型:
通過Number()函數轉換:
var num = "10"; /*純數字的字符串*/ console.log(typeof num); /*這里打印的結果為string*/ num = Number(num); console.log(num); /*這里打印的結果為10*/ console.log(typeof num); /*這里打印的結果為number*/ console.log('--------------------------'); var message = "今年是2021年"; /*非純數字的字符串*/ console.log(typeof message); /*這里打印的結果為string*/ message = Number(message); console.log(message) /*這里打印的結果為NaN*/ console.log(typeof message); /*這里打印的結果為number*/ console.log('--------------------------'); var a = ""; /*空字符串*/ console.log(typeof a); /*這里打印的結果為string*/ a = Number(a); console.log(a); /*這里打印的結果為0*/ console.log(typeof a); /*這里打印的結果為number*/ console.log('--------------------------'); var b = true; /*布爾值true*/ console.log(typeof b); /*這里打印的結果為boolean*/ b = Number(b); console.log(b); /*這里打印的結果為1*/ console.log(typeof b); /*這里打印的結果為number*/ console.log('--------------------------'); var c = false; /*布爾值false*/ console.log(typeof c); /*這里打印的結果為boolean*/ c = Number(c); console.log(c); /*這里打印的結果為0*/ console.log(typeof c); /*這里打印的結果為number*/ console.log('--------------------------'); var d = null; /*空值null*/ console.log(typeof d); /*這里打印的結果為object*/ d = Number(d); console.log(d); /*這里打印的結果為0*/ console.log(typeof d); /*這里打印的結果為number*/ console.log('--------------------------'); var e = undefined; /*未定義值undefined*/ console.log(typeof e); /*這里打印的結果為undefined*/ e = Number(e); console.log(e); /*這里打印的結果為NaN*/ console.log(typeof e); /*這里打印的結果為number*/ console.log('--------------------------');
①當字符串為純數字時直接返回該數字,當字符串中含有非數字時返回NaN(NaN,全稱:not a number ,表示不是一個數字,但 typeof NaN 返回的是number。)
②當字符串為空串時返回 0
③當變量為布爾類型時:true返回 1 ,false返回 0
④當變量為null類型時返回 0
⑤當變量為undefined時返回 NaN
通過parseInt()轉換:
var sty = '200px的樣式'; sty = parseInt(sty); console.log(sty); /*輸出結果為200*/ console.log(typeof sty); /*number*/ var std = '200.545px的樣式'; std = parseInt(std); console.log(std); /*輸出結果為200*/ console.log(typeof std); /*number*/ var str = '我有200塊'; str = parseInt(str); console.log(str); /*輸出結果為NaN*/ console.log(typeof str); /*number*/ var stx = '20乘10等於200'; stx = parseInt(stx); console.log(stx); /*輸出結果為20*/ console.log(typeof stx); /*number*/
特點:它可以對字符串中的數字進行提取並返回,對於非字符串的轉換它會先將其轉換為字符串再進行轉換
注意:當需要轉換的值為“0X”等其他數開頭時,某些低版本瀏覽器會將其當作某進制數來進行轉換。
可以通過給parseInt傳參解決,parseInt(string,10)。string代表需要轉換的變量10代表將該string參數當成幾進制進行轉換。
提取規則:1.非數字開頭直接返回NaN。 2.以數字開頭時提取數字,直到遇到非數字。 3.僅提取整數,小數點及后面的值不提取。
通過parseFloat()轉換:
var stx = '200.545的數據'; stx = parseFloat(stx); console.log(stx); /*輸出結果為200.545*/ console.log(typeof stx); /*number*/
特點:它可以對字符串中的數字進行提取並返回,對於非字符串的轉換它會先將其轉換為字符串再進行轉換
提取規則:和 parseInt() 大致相同,不同的是它可以提取小數(必須是有效小數)
總結:將變量強制轉換為Number類型的方法有:①Number() ②parseInt() ③parseFloat()
3.將變量類型轉換為Boolean類型:
通過Boolean()轉換:
var num = 0; num = Boolean(num) console.log(num) /* false */ var num = NaN; num = Boolean(num) console.log(num) /* false */ var num = 2; num = Boolean(num) console.log(num) /* true */ var num = -2; num = Boolean(num) console.log(num) /* true */ var str = "ssaiuhujakjs"; str = Boolean(str) console.log(str) /* true */ var str = ""; /*空串*/ str = Boolean(str) console.log(str) /* false */ var str = " "; /*全空格的字符串*/ str = Boolean(str) console.log(str) /* true */ var str = null; str = Boolean(str) console.log(str) /* false */ var str = undefined; str = Boolean(str) console.log(str) /* false */ var str = Object; str = Boolean(str) console.log(str) /* true */ var str = Array; str = Boolean(str) console.log(str) /* true */ var str = Function; str = Boolean(str) console.log(str) /* true */
特點:1.非 0 和 NaN 的數字全部轉換為 true
2.除了空字符串為 false,其他任何字符串都轉換為 true
3.null 和 undefined 都轉換為 false
4.對象(Object、Function、Array)都轉換為 true