Number() 轉換數值,String() 轉換字元串,Boolean() 轉換布爾值。 JavaScript 數據類型 JavaScript 中有五種可包含值的數據類型: 字元串(string) 數字(number) 布爾(boolean) 對象(object) 函數(function) 有三種 ...
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 |