JavaScript 類型轉(zhuǎn)換
Number() 轉(zhuǎn)換為數(shù)字, String() 轉(zhuǎn)換為字符串, Boolean() 轉(zhuǎn)化為布爾值。
JavaScript 數(shù)據(jù)類型
在 JavaScript 中有 5 種不同的數(shù)據(jù)類型:
string
number
boolean
object
function
3 種對象類型:
Object
Date
Array
2 個不包含任何值的數(shù)據(jù)類型:
null
undefined
typeof 操作符
你可以使用 typeof 操作符來查看 JavaScript 變量的數(shù)據(jù)類型。
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p> typeof 操作符返回變量、對象、函數(shù)、表達(dá)式的類型。</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = typeof "john" + "<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>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
請注意:
NaN 的數(shù)據(jù)類型是 number
數(shù)組(Array)的數(shù)據(jù)類型是 object
日期(Date)的數(shù)據(jù)類型為 object
null 的數(shù)據(jù)類型是 object
未定義變量的數(shù)據(jù)類型為 undefined
如果對象是 JavaScript Array 或 JavaScript Date ,我們就無法通過 typeof 來判斷他們的類型,因?yàn)槎际?返回 Object。
constructor 屬性
constructor 屬性返回所有 JavaScript 變量的構(gòu)造函數(shù)。
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p> constructor 屬性返回變量或?qū)ο蟮臉?gòu)造函數(shù)。</p> <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>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
你可以使用 constructor 屬性來查看是對象是否為數(shù)組 (包含字符串 "Array"):
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p>判斷是否為數(shù)組。</p> <p id="demo"></p> <script> var fruits = ["Banana", "Orange", "Apple", "Mango"]; document.getElementById("demo").innerHTML = isArray(fruits); function isArray(myArray) { return myArray.constructor.toString().indexOf("Array") > -1; } </script> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
你可以使用 constructor 屬性來查看是對象是否為日期 (包含字符串 "Date"):
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p>判斷是否為日期。</p> <p id="demo"></p> <script> var myDate = new Date(); document.getElementById("demo").innerHTML = isDate(myDate); function isDate(myDate) { return myDate.constructor.toString().indexOf("Date") > -1; } </script> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
JavaScript 類型轉(zhuǎn)換
JavaScript 變量可以轉(zhuǎn)換為新變量或其他數(shù)據(jù)類型:
通過使用 JavaScript 函數(shù)
通過 JavaScript 自身自動轉(zhuǎn)換
將數(shù)字轉(zhuǎn)換為字符串
全局方法 String() 可以將數(shù)字轉(zhuǎn)換為字符串。
該方法可用于任何類型的數(shù)字,字母,變量,表達(dá)式:
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p> String() 方法可以將數(shù)字轉(zhuǎn)換為字符串。</p> <p id="demo"></p> <script> var x = 123; document.getElementById("demo").innerHTML = String(x) + "<br>" + String(123) + "<br>" + String(100 + 23); </script> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
Number 方法 toString() 也是有同樣的效果。
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p>toString() 方法將數(shù)字轉(zhuǎn)換為字符串。</p> <p id="demo"></p> <script> var x = 123; document.getElementById("demo").innerHTML = x.toString() + "<br>" + (123).toString() + "<br>" + (100 + 23).toString(); </script> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
在 Number 方法 章節(jié)中,你可以找到更多數(shù)字轉(zhuǎn)換為字符串的方法:
方法 | 描述 |
---|---|
toExponential() | 把對象的值轉(zhuǎn)換為指數(shù)計(jì)數(shù)法。 |
toFixed() | 把數(shù)字轉(zhuǎn)換為字符串,結(jié)果的小數(shù)點(diǎn)后有指定位數(shù)的數(shù)字。 |
toPrecision() | 把數(shù)字格式化為指定的長度。 |
將布爾值轉(zhuǎn)換為字符串
全局方法 String() 可以將布爾值轉(zhuǎn)換為字符串。
String(true) // 返回 "true"
Boolean 方法 toString() 也有相同的效果。
true.toString() // 返回 "true"
將日期轉(zhuǎn)換為字符串
全局方法 String() 可以將日期轉(zhuǎn)換為字符串。
Date 方法 toString() 也有相同的效果。
實(shí)例
在 Date 方法 章節(jié)中,你可以查看更多關(guān)于日期轉(zhuǎn)換為字符串的函數(shù):
方法 | 描述 |
---|---|
getDate() | 從 Date 對象返回一個月中的某一天 (1 ~ 31)。 |
getDay() | 從 Date 對象返回一周中的某一天 (0 ~ 6)。 |
getFullYear() | 從 Date 對象以四位數(shù)字返回年份。 |
getHours() | 返回 Date 對象的小時 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 對象的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 對象的分鐘 (0 ~ 59)。 |
getMonth() | 從 Date 對象返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 對象的秒數(shù) (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數(shù)。 |
將字符串轉(zhuǎn)換為數(shù)字
全局方法 Number() 可以將字符串轉(zhuǎn)換為數(shù)字。
字符串包含數(shù)字(如 "3.14") 轉(zhuǎn)換為數(shù)字 (如 3.14).
空字符串轉(zhuǎn)換為 0。
其他的字符串會轉(zhuǎn)換為 NaN (不是個數(shù)字)。
Number(" ") // 返回 0
Number("") // 返回 0
Number("99 88") // 返回 NaN
在 Number 方法 章節(jié)中,你可以查看到更多關(guān)于字符串轉(zhuǎn)為數(shù)字的方法:
方法 | 描述 |
---|---|
parseFloat() | 解析一個字符串,并返回一個浮點(diǎn)數(shù)。 |
parseInt() | 解析一個字符串,并返回一個整數(shù)。 |
一元運(yùn)算符 +
Operator + 可用于將變量轉(zhuǎn)換為數(shù)字:
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p> typeof 操作符返回變量或表達(dá)式的類型。</p> <button onclick="myFunction()">點(diǎn)我</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>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
如果變量不能轉(zhuǎn)換,它仍然會是一個數(shù)字,但值為 NaN (不是一個數(shù)字):
實(shí)例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <p> typeof 操作符返回變量或表達(dá)式的類型。</p> <button onclick="myFunction()">點(diǎn)我</button> <p id="demo"></p> <script> function myFunction() { var y = "John"; var x = + y; document.getElementById("demo").innerHTML = typeof x + "<br>" + x; } </script> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
將布爾值轉(zhuǎn)換為數(shù)字
全局方法 Number() 可將布爾值轉(zhuǎn)換為數(shù)字。
Number(true) // 返回 1
將日期轉(zhuǎn)換為數(shù)字
全局方法 Number() 可將日期轉(zhuǎn)換為數(shù)字。
Number(d) // 返回 1404568027739
日期方法 getTime() 也有相同的效果。
d.getTime() // 返回 1404568027739
自動轉(zhuǎn)換類型
當(dāng) JavaScript 嘗試操作一個 "錯誤" 的數(shù)據(jù)類型時,會自動轉(zhuǎn)換為 "正確" 的數(shù)據(jù)類型。
以下輸出結(jié)果不是你所期望的:
"5" + null // 返回"5null" null 轉(zhuǎn)換為 "null"
"5" + 1 // 返回 "51" 1 轉(zhuǎn)換為 "1"
"5" - 1 // 返回 4 "5" 轉(zhuǎn)換為 5
自動轉(zhuǎn)換為字符串
當(dāng)你嘗試輸出一個對象或一個變量時 JavaScript 會自動調(diào)用變量的 toString() 方法:
// if myVar = {name:"Fjohn"} // toString 轉(zhuǎn)換為 "[object Object]"
// if myVar = [1,2,3,4] // toString 轉(zhuǎn)換為 "1,2,3,4"
// if myVar = new Date() // toString 轉(zhuǎn)換為 "Fri Jul 18 2014 09:08:55 GMT+0200"
數(shù)字和布爾值也經(jīng)常相互轉(zhuǎn)換:
// if myVar = true // toString 轉(zhuǎn)換為 "true"
// if myVar = false // toString 轉(zhuǎn)換為 "false"