Number() 轉換數值,String() 轉換字串,Boolean() 轉換布林值,
JavaScript 資料型別
JavaScript 中有五種可包含值的資料型別:
- 字串(string)
- 數字(number)
- 布爾(boolean)
- 物件(object)
- 函式(function)
有三種物件型別:
- 物件(Object)
- 日期(Date)
- 陣列(Array)
同時有兩種不能包含值的資料型別:
- null
- undefined
typeof 運算子
您可以使用 typeof 運算子來確定 JavaScript 變數的資料型別,
實體
typeof "Bill" // 回傳 "string" typeof 3.14 // 回傳 "number" typeof NaN // 回傳 "number" typeof false // 回傳 "boolean" typeof [1,2,3,4] // 回傳 "object" typeof {name:'Bill', age:62} // 回傳 "object" typeof new Date() // 回傳 "object" typeof function () {} // 回傳 "function" typeof myCar // 回傳 "undefined" * typeof null // 回傳 "object"
請注意:
- NaN 的資料型別是數值
- 陣列的資料型別是物件
- 日期的資料型別是物件
- null 的資料型別是物件
- 未定義變數的資料型別是 undefined
- 尚未賦值的變數的資料型別也是 undefined
您無法使用 typeof 去判斷 JavaScript 物件是否是陣列(或日期),
typeof 的資料型別
typeof 運算子不是變數,它屬于運算子,運算子(比如 + - * /)沒有資料型別,
但是,typeof 始侄訓回傳字串(包含運算元的型別),
constructor 屬性
constructor 屬性回傳所有 JavaScript 變數的構造器函式,
實體
"Bill".constructor // 回傳 "function String() { [native code] }" (3.14).constructor // 回傳 "function Number() { [native code] }" false.constructor // 回傳 "function Boolean() { [native code] }" [1,2,3,4].constructor // 回傳 "function Array() { [native code] }" {name:'Bill', age:62}.constructor // 回傳" function Object() { [native code] }" new Date().constructor // 回傳 "function Date() { [native code] }" function () {}.constructor // 回傳 "function Function(){ [native code] }"
您可以通過檢查 constructor 屬性來確定某個物件是否為陣列(包含單詞 "Array"):
實體
function isArray(myArray) { return myArray.constructor.toString().indexOf("Array") > -1; }
或者更簡單,您可以檢查物件是否是陣列函式:
實體
function isArray(myArray) { return myArray.constructor === Array; }
您可以通過檢查 constructor 屬性來確定某個物件是否為日期(包含單詞 "Date"):
實體
function isDate(myDate) { return myDate.constructor.toString().indexOf("Date") > -1; }
或者更簡單,您可以檢查物件是否是日期函式:
實體
function isDate(myDate) { return myDate.constructor === Date; }
JavaScript 型別轉換
JavaScript 變數能夠被轉換為新變數以及另一種資料型別:
- 通過使用 JavaScript 函式
- 通過 JavaScript 本身自動轉換
把數值轉換為字串
全域方法 String() 能夠把數字轉換為字串,
它可用于任意型別的數字、文字、變數或運算式:
實體
String(x) // 從數值變數 x 回傳字串 String(123) // 從數值文本 123 回傳字串 String(100 + 23) // 從運算式中的數值回傳字串
數字方法 toString() 同理,
實體
x.toString() (123).toString() (100 + 23).toString()
| 方法 | 描述 |
|---|---|
| toExponential() | 回傳字串,對數字進行舍入,并使用指數計數法來寫, |
| toFixed() | 回傳字串,對數字進行舍入,并使用指定位數的小數來寫, |
| toPrecision() | 回傳字串,把數字寫為指定的長度, |
把布爾轉換為字串
全域方法 String() 能夠將布爾轉換為字串,
String(false) // 回傳 "false" String(true) // 回傳 "true"
布爾方法 toString() 同理,
false.toString() // 回傳 "false" true.toString() // 回傳 "true"
把日期轉換為字串
全域方法 String() 可將日期轉換為字串,
String(Date()) // 回傳 "Fri Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"
日期方法 toString() 同理,
實體
Date().toString() // 回傳 "Fri Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"
| 方法 | 描述 |
|---|---|
| getDate() | 獲得以數值計(1-31)的日 |
| getDay() | 或者以數值計(0-6)的周 |
| getFullYear() | 獲得四位的年(yyyy) |
| getHours() | 獲得時(0-23) |
| getMilliseconds() | 獲得毫秒(0-999) |
| getMinutes() | 獲得分鐘(0-59) |
| getMonth() | 獲得月(0-11) |
| getSeconds() | 獲得秒(0-59) |
| getTime() | 獲得時間(1970 年 1 月 1 日以來的毫秒) |
把字串轉換為數值
全域方法 Number() 可把字串轉換為數字,
包含數字的字串(比如 "3.14")轉換為數字(比如 3.14),
空的字串轉換為 0,
其他字串將轉換為 NaN(Not a number,不是數字),
Number("3.14") // 回傳 3.14
Number(" ") // 回傳 0
Number("") // 回傳 0
Number("99 88") // 回傳 NaN
| 方法 | 描述 |
|---|---|
| parseFloat() | 決議字串并回傳浮點數, |
| parseInt() | 決議字串并回傳整數, |
一元 + 運算子
一元的 + 運算子可用于把變數轉換為數字:
實體
var y = "5"; // y 是字串 var x = + y; // x 是數字
如果無法轉換變數,則仍會成為數字,但是值為 NaN(Not a number):
實體
var y = "Bill"; // y 是字串 var x = + y; // x 是數字 (NaN)
把布爾轉換數值
全域方法 Number() 也可把布爾轉換為數字,
Number(false) // 回傳 0 Number(true) // 回傳 1
把日期轉換為數字
全域方法 Number() 可用于把日期轉換為數字,
d = new Date(); Number(d) // 回傳 1576201701989
日期方法 getTime() 同理,
d = new Date(); d.getTime() // 回傳 1576201701992,時間戳
自動型別轉換
如果 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 Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"
數字和布爾也會被轉換,但并不明顯:
// 如果 myVar = 123 // toString 轉換為 "123" // 如果 myVar = true // toString 轉換為 "true" // 如果 myVar = false // toString 轉換為 "false"
JavaScript 型別轉換表
下表中列出了將不同 JavaScript 值轉換為數字、字串和布爾的結果:
| 原始值 | 轉換為數字 | 轉換為字串 | 轉換為邏輯 |
|---|---|---|---|
| false | 0 | "false" | false |
| true | 1 | "true" | true |
| 0 | 0 | "0" | false |
| 1 | 1 | "1" | true |
| "0" | 0 | "0" | true |
| "000" | 0 | "000" | 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 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/163303.html
標籤:JavaScript
