Number() 用來轉換數字, String() 用來轉換字串, Boolean() 用來轉換布爾值。
JavaScript 資料類型
JavaScript中能夠容納值的資料類型有五種:
· string
· number
· boolean
· object
· function
其中物件類型又分為三種:
· Object
· Date
· Array
另外兩種為不能容納值的資料類型:
· null
· undefined
typeof 操作符
你可以使用typeof操作符來查看JavaScript變數的資料類型。
樣本
typeof "John" // 返回 string
typeof 3.14 // 返回 number
typeof NaN // 返回 number
typeof false // 返回 boolean
typeof [1,2,3,4] // 返回 object
typeof {name:'John', age:34} // 返回 object
typeof new Date() // 返回 object
typeof function () {} // 返回 function
typeof myCar // 返回 undefined (如果myCar未聲明)
typeof null // 返回 object
注意:
· NaN 的資料類型為number
· 數組的資料類型為object
· 日期的資料類型為object
· null的資料類型為object
· 未聲明變數的資料類型為undefined
typeof 的資料類型
typeof 操作符並非變數。 因為它是一個操作符。同樣,操作符( + - * / ) 沒有任何資料類型。
typeof的傳回值是字串。
constructor屬性
constructor 屬性返回所有JavaScript變數的建構函式。
樣本
"John".constructor // 返回函數String()
(3.14).constructor // 返回函數Number()
false.constructor // 返回函數Boolean()
[1,2,3,4].constructor // 返回函數Array()
{name:'John', age:34}.constructor // 返回函數 Object()
new Date().constructor // 返回函數 Date()
function () {}.constructor // 返回函數 Function()
你可以通過檢查constructor屬性以判斷某個物件類型是否是Array (包含關鍵字"Array"):
樣本
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
同樣,你也可以通過檢查constructor屬性以判斷某個物件類型是否是Date (包含關鍵詞"Date"):
樣本
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
JavaScript 類型轉換
JavaScript變數可以被轉換為另外一種資料類型的新變數 :
· 使用JavaScript函數的方式
· JavaScript的自動轉換機制
轉換Numbers為Strings
全域方法String() 可以轉換numbers為strings.
該函數可以使用在任意類型的數字、字面量、變數或運算式:
樣本
String(x) // 返回從變數x轉換來的字串
String(123) // 返回從字面量123轉換來的字串
String(100 + 23) // 返回從運算式轉換來的字串
Number對象的toString() 方法也可以達到同樣效果。
樣本
x.toString()
(123).toString()
(100 + 23).toString()
轉換 Booleans 為 Strings
全域方法String() 也可以轉換 booleans 為 strings.
String(false) // 返回"false"
String(true) // 返回"true"
Boolean 對象的toString() 方法也可以達到同樣效果。
false.toString() // 返回"false"
true.toString() // 返回"true"
轉換Dates 為 Strings
全域方法String() 也可以轉換dates 為 strings。
String(Date()) // 返回Jul 17 2014 15:38:19 GMT+0200
Date對象toString() 方法也可以達到同樣效果。
樣本
Date().toString() // 返回 Jul 17 2014 15:38:19 GMT+0200
轉換 Strings 為 Numbers
全域方法 Number() 可以轉換 strings 為 numbers。
包含數位字串(如 "3.14") 可以被轉換為數字 (3.14).
Null 字元串被轉換為 0。
其他值被轉換為NaN (Not a number).
Number("3.14") // 返回3.14
Number(" ") // 返回0
Number("") // 返回0
Number("99 88") // 返回NaN
一元操作符 +
+操作符可以用來轉換一個變數為數字:
樣本
var y = "5"; // y 是字串類型
var x = + y; // x 是數字類型
如果變數不能被轉換,仍可轉換為數字類型,但是值是NaN (Not a number):
樣本
var y = "John"; // y 是字串類型
var x = + y; // x 是數字類型,值是NaN
轉換 Booleans 為Numbers
Number(false) // 返回0
Number(true) // 返回1
轉換Dates 為Numbers
全域方法Number() 可以轉換dates 為 numbers.
d = new Date();
Number(d) // 返回1404568027739
date對象的getTime() 方法可以達到同樣效果。
d = new Date();
d.getTime() // 返回1404568027739
自動類型轉換
當JavaScript 試圖操作一個“錯誤的”資料類型時, 它將首先嘗試將其轉換為一個“正確的”資料類型。
結果並不一定是你所期望的:
5 + null // 返回5 因為null 被轉換為 0
"5" + null // 返回"5null" 因為null 被轉換為 "null"
"5" + 2 // 返回52 因為2被轉換為 "2"
"5" - 2 // 返回3 因為"5" 被轉換為5
"5" * "2" // 返回10 因為"5" 和"2" 被轉換為5和2
自動轉換為字串類型
JavaScript 可以自動調用變數的 toString() 函數,當它試圖列印一個對象或變數時:
document.getElementById("demo").innerHTML = myVar;
// 如果myVar = {name:"Fjohn"},調用 toString()轉換為"[object Object]"
// 如果myVar = [1,2,3,4] ,調用toString()轉換為"1,2,3,4"
// 如果myVar = new Date() ,調用toString()轉換為 "Fri Jul 18 2014 09:08:55 GMT+0200"
數字和布爾類型也可以被轉換,但一般不明顯:
// 如果myVar = 123 // toString() 轉換為 "123"
// 如果myVar = true // toString() 轉換為"true"
// 如果myVar = false // toString() 轉換為"false"
JavaScript 類型轉換表
該表展示了不同的JavaScript變數轉換為Number,String,Boolean後的值:
原始值 |
轉換為數字類型 |
轉換為字串類型 |
轉換為布爾類型 |
false |
0 |
"false" |
false |
true |
1 |
"true" |
true |
0 |
0 |
"0" |
false |
1 |
1 |
"1" |
true |
"0" |
0 |
"0" |
true |
"1" |
1 |
"1" |
true |
NaN |
NaN |
"NaN" |
false |
Infinity |
Infinity |
"Infinity" |
true |
-Infinity |
-Infinity |
"-Infinity" |
true |
"" |
0 |
"" |
false |
"20" |
20 |
"20" |
true |
"twenty" |
NaN |
"twenty" |
true |
[ ] |
0 |
"" |
true |
[20] |
20 |
"20" |
true |
[10,20] |
NaN |
"10,20" |
true |
["twenty"] |
NaN |
"twenty" |
true |
["ten","twenty"] |
NaN |
"ten,twenty" |
true |
function(){} |
NaN |
"function(){}" |
true |
{ } |
NaN |
"[object Object]" |
true |
null |
0 |
"null" |
false |
undefined |
NaN |
"undefined" |
false |
引號中的值代表字串類型。