JavaScript 類型轉(zhuǎn)換
Javascript的變數(shù)是鬆散類型的,它可以儲存Javascript支援的任何資料類型,其變數(shù)的類型可以在執(zhí)行時被動態(tài)改變。請看範例:
var?n = 10;
n = "hello CSSer !";
n = {};
在上面的範例中,先宣告n變數(shù)並初始化其值為10(整數(shù)型別),接著將字串「hello?CSSer!」賦值給n,接著再賦一個物件給它,最後n的型別是物件類型。可以看出變數(shù)n的類型具有動態(tài)性,實際程式設(shè)計中,我們建議不要頻繁地改變變數(shù)的類型,因為這對除錯沒有好處。
JavaScript 資料型別
在JavaScript 中有5 種不同的資料型態(tài):
string
number
boolean
object
function
#3 種物件類型:
Object
#Date
Array
2 個不包含任何值的資料類型:
null
#undefined
typeof 運算子
你可以使用typeof?操作符來查看JavaScript 變數(shù)的資料類型。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "tom" + "<br>" + typeof 3.14 + "<br>" + typeof NaN + "<br>" + typeof false + "<br>" + typeof [1,2,3,4] + "<br>" + typeof {name:'john', age:34} + "<br>" + typeof new Date() + "<br>" + typeof function () {} + "<br>" + typeof myCar + "<br>" + typeof null; </script> </body> </html>
請注意:
NaN 的資料型別是number
陣列(Array)的資料型別是object
日(Date)的資料型別為object
null 的資料型別是object
未定義變數(shù)的資料型別為undefined
constructor 屬性
constructor?屬性傳回所有JavaScript 變數(shù)的建構(gòu)函數(shù)。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = "john".constructor + "<br>" + (3.14).constructor + "<br>" + false.constructor + "<br>" + [1,2,3,4].constructor + "<br>" + {name:'john', age:34}.constructor + "<br>" + new Date().constructor + "<br>" + function () {}.constructor; </script> </body> </html>
? ?
#明確轉(zhuǎn)換
透過手動進行型別轉(zhuǎn)換,Javascript提供了以下轉(zhuǎn)型函數(shù):
轉(zhuǎn)換為數(shù)值類型:Number(mix)、parseInt(string,radix)、parseFloat(string)
轉(zhuǎn)換為字串類型:toString(radix)、String(mix)
轉(zhuǎn)換為布林類型:Boolean(mix)
1、Number(mix)函數(shù),可以將任意型別的參數(shù)mix轉(zhuǎn)換為數(shù)值型別
##其規(guī)則為:如果是布林值,true和false分別轉(zhuǎn)換為1和0如果是數(shù)字值,則回傳本身。 如果是null,回傳0.如果是undefined,回傳NaN。 如果是字串,遵循以下規(guī)則:1)如果字串中只包含數(shù)字,則將其轉(zhuǎn)換為十進位(忽略前導(dǎo)0)#2)如果字串中包含有效的浮點格式,將其轉(zhuǎn)換為浮點數(shù)值(忽略前導(dǎo)0)3)如果是空字串,則將其轉(zhuǎn)換為0#4)如果字串中包含非以上格式,則將其轉(zhuǎn)換為NaN如果是對象,則呼叫對象的valueOf()方法,然後依據(jù)前面的規(guī)則轉(zhuǎn)換傳回的值。如果轉(zhuǎn)換的結(jié)果是NaN,則呼叫物件的toString()方法,再次依照前面的規(guī)則轉(zhuǎn)換回傳的字串值。Number("3.14")????// 返回3.14Number(" ")???????// 返回0?
Number(???88")???// 返回NaN
2、parseInt(string,?radix)函數(shù),將字串轉(zhuǎn)換為整數(shù)類型的數(shù)值。它也有一定的規(guī)則:
忽略字串前面的空格,直到找到第一個非空字元
如果第一個字元不是數(shù)字符號或負??號,返回NaN
如果第一個字元是數(shù)字,則繼續(xù)解析直至字串解析完畢或遇到一個非數(shù)字符號為止
如果上步解析的結(jié)果以0開頭,則將其當作八進位來解析;如果以0x開頭,則將其當作十六進位來解析
如果指定radix參數(shù),則以radix為基數(shù)進行解析
3、parseFloat(string)函數(shù),將字串轉(zhuǎn)換為浮點數(shù)類型的數(shù)值##它的規(guī)則與parseInt基本上相同,但也有點區(qū)別:字串中第一個小數(shù)點符號是有效的,另外parseFloat會忽略所有前導(dǎo)0,如果字串包含一個可解析為整數(shù)的數(shù),則傳回整數(shù)值而不是浮點數(shù)值。
4、toString(radix)方法。除undefined和null之外的所有類型的值都具有toString()方法,其作用是傳回物件的字串表示# #物件? ?作業(yè)? ?Array ? ?將?Array?的元素轉(zhuǎn)換為字串。結(jié)果字串由逗號分隔,且連接起來。 ? ?
Boolean ? ?如果?Boolean?值是?true,則回傳?「true」。否則,返回?“false”。 ? ?
Date ? ?返回日期的文字表示法。 ? ?
Error ? ?傳回一個包含相關(guān)錯誤訊息的字串。
Function ? ?返回如下格式的字符串,其中?functionname?是被調(diào)用?toString?方法函數(shù)的名稱:
function?functionname(?)?{?[native?code]?}
Number ? ?回傳數(shù)字的文字表示。 ? ?
String ? ?傳回?String?物件的值。 ? ?
預(yù)設(shè) ? ?回傳?“[object?objectname]”,其中?objectname?則是物件類型的名稱。
5、String(mix)函數(shù),將任何類型的值轉(zhuǎn)換為字串,其規(guī)則為:
如果有toString()方法,則呼叫該方法(不傳遞radix參數(shù))並傳回結(jié)果
如果是null,則傳回”null”
如果是undefined,返回”undefined”
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p id="demo"></p> <script> var x = 55; document.getElementById("demo").innerHTML = String(x) + "<br>" + String(13.3) + "<br>" + String(100.99 + 23); </script> </body> </html>
#6、Boolean(mix)函數(shù),將任何類型的值轉(zhuǎn)換為布林值。
以下值會轉(zhuǎn)換為false:false、」"、0、NaN、null、undefined,其餘任何值都會轉(zhuǎn)換為true。
實例:
#<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> <script type="text/javascript"> var i="123abc"; i=parseInt(i);//字符串轉(zhuǎn)整形 alert(i+","+typeof(i));//輸出:123,number i="12.3abc"; i=parseFloat(i);//字符串轉(zhuǎn)浮點型 alert(i+","+typeof(i));//輸出:12.3,number(可見不管是int還是float都是number類型) i="a123abc"; i=parseInt(i);//字符串轉(zhuǎn)整形 alert(i+","+typeof(i));//輸出:NaN,number (由于轉(zhuǎn)換失敗,所以提示“不是一個數(shù)字,Not a Number”) var num=document.getElementById("num").value; function showMsg(num) { for(var i=0;i<num;i++) { document.write("你好,JavaScript!<br/>"); } } </script> </head> <body> </body> </html>
一元運算子+
Operator +?可用來將變數(shù)轉(zhuǎn)換為數(shù)字:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <button onclick="myFunction()">點擊</button> <p id="demo"></p> <script> function myFunction() { var y = "5"; var x = + y; document.getElementById("demo").innerHTML = typeof y + "<br>" + typeof x; } </script> </body> </html>