JavaScript是弱類型語言,它的值數據類型是可以變的。
有些語言要求指定每個變量的數據類型,這樣的語言叫強類型語言,如java C++
強制類型轉換
類型轉換有兩種:一種是顯式轉換,即需要程序員手動寫代碼轉換;另一種是隱匿轉換,由JavaScript解釋器轉換。
JavaScript提供以下函數進行顯式轉換:
1.轉換為數值類型:Number(mix)、parseInt(string,radix)、parseFloat(string)
2.轉換為字符串類型:toString(radix)、String(mix)
3.轉換為布爾類型:Boolean(mix)
轉換為數值類型
Number(mix)函數
Number(mix)函數,可以將任意類型的參數mix轉換為數值類型。其規則為:
1、如果是布爾值,true和false分別被轉換為1和0
2、如果是數字值,返回本身。
3、如果是null,返回0
4、如果是undefined,返回NaN。
5、如果是字符串,遵循以下規則:
a.如果字符串中只包含數字,則將其轉換為十進制(忽略前導0)
b.如果字符串中包含有效的浮點格式,將其轉換為浮點數值(忽略前導0)
c.如果是空字符串,將其轉換為0
d.如果字符串中包含非以上格式,則將其轉換為NaN
6、如果是對象,則調用對象的valueOf()方法,然后依據前面的規則轉換返回的值。如果轉換的結果是NaN,則調用對象的toString()方法,再次依照前面的規則轉換返回的字符串值。
示例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數據類型轉換</title> 6 </head> 7 <body> 8 <script> 9 10 println(Number(false)); 11 println(Number(true)); 12 println(Number(123)); 13 println(Number(null)); 14 println(Number(undefined)); 15 println(Number(person)); 16 17 18 function println(a){ 19 document.write(a+'<br>'); 20 } 21 22 var person={};//字面量創建對象 23 24 // 設置字面量對象屬性 25 person.name='huangshiren'; 26 person.age=58; 27 person.appetite=3; 28 person.eat=function(){ 29 document.write('正在吃飯'); 30 } 31 </script> 32 </body> 33 </html>
parseInt(string, radix)函數
參數說明:
string 要被解析的值。如果參數不是一個字符串,則將其轉換為字符串(使用 ToString 抽象操作)。字符串開頭的空白符將會被忽略。
radix 一個介於2和36之間的整數(數學系統的基礎),表示上述字符串的基數。比如參數"10"表示使用我們通常使用的十進制數值系統。始終指定此參數可以消除閱讀該代碼時的困惑並且保證轉換結果可預測。當未指定基數時,不同的實現會產生不同的結果,通常將值默認為10。
parseInt(string, radix)函數,將字符串轉換為整數類型的數值。它也有一定的規則:
1.忽略字符串前面的空格,直至找到第一個非空字符
2.如果第一個字符不是數字符號或者負號,返回NaN
3.如果第一個字符是數字,則繼續解析直至字符串解析完畢或者遇到一個非數字符號為止
4.如果上步解析的結果以0開頭,則將其當作八進制來解析;如果以x開頭,則將其當作十六進制來解析
5.如果指定radix參數,則以radix為基數進行解析
示例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數據類型轉換</title> 6 </head> 7 <body> 8 <script> 9 10 println(parseInt("12.34567",10)); 11 println(parseInt("de",10)); 12 println(parseInt("0123456789",10)); 13 println(parseInt("0e0",16)); 14 println(parseInt("0101010001",2)); 15 16 function println(a){ 17 document.write(a+'<br>'); 18 } 19 20 21 </script> 22 </body> 23 </html>
parseFloat(string)函數
parseFloat(string)函數,將字符串轉換為浮點數類型的數值。
它的規則與parseInt基本相同,但也有點區別:字符串中第一個小數點符號是有效的,另外parseFloat會忽略所有前導0,如果字符串包含一個可解析為整數的數,則返回整數值而不是浮點數值。
示例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數據類型轉換</title> 6 </head> 7 <body> 8 <script> 9 10 println(parseFloat("3.14")); 11 println(parseFloat("314e-2")); 12 println(parseFloat("0.0314E+2")); 13 println(parseFloat("3.14more non-digit characters")); 14 15 function println(a){ 16 document.write(a+'<br>'); 17 } 18 19 20 </script> 21 </body> 22 </html>
轉換為字符串類型
toString(radix)方法。除undefined和null之外的所有類型的值都具有toString()方法,其作用是返回對象的字符串表示。
示例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數據類型轉換</title> 6 </head> 7 <body> 8 <script> 9 10 var count=10; 11 println(count.toString()); 12 13 var boolean=true; 14 println(boolean.toString()); 15 16 var today=new Date(); 17 println(today.toString()); 18 19 var shoppingCart=['鞋','連衣裙','皮帶']; 20 println(shoppingCart.toString()); 21 22 23 var person={};//字面量創建對象 24 25 // 設置字面量對象屬性 26 person.name='huangshiren'; 27 person.age=58; 28 person.appetite=3; 29 person.eat=function(){ 30 document.write('正在吃飯'); 31 } 32 33 println(person.toString()); 34 35 36 function println(a){ 37 document.write(a+'<br>'); 38 } 39 40 41 </script> 42 </body> 43 </html>
轉換為布爾類型
Boolean(mix)函數,將任何類型的值轉換為布爾值。
示例
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>數據類型轉換</title> 6 </head> 7 <body> 8 <script> 9 10 var count=10; 11 12 println(Boolean(count)); 13 println(Boolean(0)); 14 println(Boolean(4<3)); 15 println(Boolean(null)); 16 println(Boolean("")); 17 println(Boolean(undefined)); 18 19 var shoppingCart=['鞋','連衣裙','皮帶']; 20 println(Boolean(shoppingCart)); 21 22 23 24 var person={};//字面量創建對象 25 26 // 設置字面量對象屬性 27 person.name='huangshiren'; 28 person.age=58; 29 person.appetite=3; 30 person.eat=function(){ 31 document.write('正在吃飯'); 32 } 33 34 println(Boolean(person)); 35 36 function println(a){ 37 document.write(a+'<br>'); 38 } 39 40 41 </script> 42 </body> 43 </html>