Javascript的變數是鬆散類型的,它可以儲存Javascript支援的任何資料類型,其變數的類型可以在執行時被動態改變。請看範例:
var n = 10;
n = "hello CSSer !";
n = {};
在上面的範例中,先宣告n變數並初始化其值為10(整數型別),接著將字串「hello CSSer!」賦值給n,接著再賦一個物件給它,最後n的型別是物件類型。可以看出變數n的類型具有動態性,實際程式設計中,我們建議不要頻繁地改變變數的類型,因為這對除錯沒有好處。
JavaScript 資料型別
在JavaScript 中有5 種不同的資料型態:
string
number
boolean
object
function
#3 種物件類型:
Object
#Date
Array
2 個不包含任何值的資料類型:
null
#undefined
typeof 運算子
你可以使用typeof 操作符來查看JavaScript 變數的資料類型。
<!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
未定義變數的資料型別為undefined
constructor 屬性
constructor 屬性傳回所有JavaScript 變數的建構函數。
<!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>
#明確轉換
透過手動進行型別轉換,Javascript提供了以下轉型函數:
轉換為數值類型:Number(mix)、parseInt(string,radix)、parseFloat(string)
轉換為字串類型:toString(radix)、String(mix)
轉換為布林類型:Boolean(mix)
1、Number(mix)函數,可以將任意型別的參數mix轉換為數值型別
##其規則為:如果是布林值,true和false分別轉換為1和0如果是數字值,則回傳本身。 如果是null,回傳0.如果是undefined,回傳NaN。 如果是字串,遵循以下規則:1)如果字串中只包含數字,則將其轉換為十進位(忽略前導0)#2)如果字串中包含有效的浮點格式,將其轉換為浮點數值(忽略前導0)3)如果是空字串,則將其轉換為0#4)如果字串中包含非以上格式,則將其轉換為NaN如果是對象,則呼叫對象的valueOf()方法,然後依據前面的規則轉換傳回的值。如果轉換的結果是NaN,則呼叫物件的toString()方法,再次依照前面的規則轉換回傳的字串值。Number("3.14") // 返回3.14Number(" ") // 返回0
Number( 88") // 返回NaN
2、parseInt(string, radix)函數,將字串轉換為整數類型的數值。它也有一定的規則:
忽略字串前面的空格,直到找到第一個非空字元
如果第一個字元不是數字符號或負號,返回NaN
如果第一個字元是數字,則繼續解析直至字串解析完畢或遇到一個非數字符號為止
如果上步解析的結果以0開頭,則將其當作八進位來解析;如果以0x開頭,則將其當作十六進位來解析
如果指定radix參數,則以radix為基數進行解析
3、parseFloat(string)函數,將字串轉換為浮點數類型的數值##它的規則與parseInt基本上相同,但也有點區別:字串中第一個小數點符號是有效的,另外parseFloat會忽略所有前導0,如果字串包含一個可解析為整數的數,則傳回整數值而不是浮點數值。
4、toString(radix)方法。除undefined和null之外的所有類型的值都具有toString()方法,其作用是傳回物件的字串表示# #物件 作業 Array 將 Array 的元素轉換為字串。結果字串由逗號分隔,且連接起來。
Boolean 如果 Boolean 值是 true,則回傳 「true」。否則,返回 “false”。
Date 返回日期的文字表示法。
Error 傳回一個包含相關錯誤訊息的字串。
Function 返回如下格式的字符串,其中 functionname 是被調用 toString 方法函數的名稱:
function functionname( ) { [native code] }
Number 回傳數字的文字表示。
String 傳回 String 物件的值。
預設 回傳 “[object objectname]”,其中 objectname 則是物件類型的名稱。
5、String(mix)函數,將任何類型的值轉換為字串,其規則為:
如果有toString()方法,則呼叫該方法(不傳遞radix參數)並傳回結果
如果是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)函數,將任何類型的值轉換為布林值。
以下值會轉換為false:false、」"、0、NaN、null、undefined,其餘任何值都會轉換為true。
實例:
#<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var i="123abc"; i=parseInt(i);//字符串转整形 alert(i+","+typeof(i));//输出:123,number i="12.3abc"; i=parseFloat(i);//字符串转浮点型 alert(i+","+typeof(i));//输出:12.3,number(可见不管是int还是float都是number类型) i="a123abc"; i=parseInt(i);//字符串转整形 alert(i+","+typeof(i));//输出:NaN,number (由于转换失败,所以提示“不是一个数字,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 + 可用來將變數轉換為數字:
<!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>