最新的Web開發教程
 

JavaScript類型轉換


Number()轉換為數字, String()轉換為字符串, Boolean()轉換為布爾。


JavaScript的數據類型

在JavaScript中有5種不同的數據類型,可以包含值:

  • string
  • number
  • boolean
  • object
  • function

有3種類型的對象:

  • Object
  • Date
  • Array

2數據類型不能包含值:

  • null
  • undefined

typeof操作

您可以使用typeof操作者找到一個JavaScript變量的數據類型。

typeof "John"                 // Returns string
typeof 3.14                   // Returns number
typeof NaN                    // Returns number
typeof false                  // Returns boolean
typeof [1,2,3,4]              // Returns object
typeof {name:'John', age:34}  // Returns object
typeof new Date()             // Returns object
typeof function () {}         // Returns function
typeof myCar                  // Returns undefined (if myCar is not declared)
typeof null                   // Returns object
試一試»

請注意:

  • 的數據類型NaN的數
  • 一個數據類型array的對象
  • 一個數據類型date為對象
  • 的數據類型null的對象
  • 一個的數據類型undefined變量未定義

不能使用typeof來確定一個JavaScript對象是一個數組(或日期)。


的數據類型typeof

typeof算不算一個變量。 它是一個運算符。 算( + - * / )沒有任何數據類型。

但是,在typeof操作者總是返回包含操作數的類型的字符串


constructor屬性

constructor屬性返回所有的JavaScript變量的構造函數。

"John".constructor                 // Returns function String()  { [native code] }
(3.14).constructor                 // Returns function Number()  { [native code] }
false.constructor                  // Returns function Boolean() { [native code] }
[1,2,3,4].constructor              // Returns function Array()   { [native code] }
{name:'John', age:34}.constructor  // Returns function Object()  { [native code] }
new Date().constructor             // Returns function Date()    { [native code] }
function () {}.constructor         // Returns function Function(){ [native code] }
試一試»

您可以檢查constructor屬性,以找出是否一個對象是一個數組(包含單詞"Array" ):

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}
試一試»

您可以檢查constructor屬性,以找出是否一個對象是一個日期(包含單詞"Date" ):

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}
試一試»

JavaScript的類型轉換

JavaScript變數可以轉換為一個新的變量和其它數據類型:

  • 通過使用JavaScript函數
  • 自動由JavaScript本身

將數字轉換為字符串

全球方法String()可以數字轉換為字符串。

它可以在任何類型的數字,文字,變量或表達式中使用:

String(x)         // returns a string from a number variable x
String(123)       // returns a string from a number literal 123
String(100 + 23)  // returns a string from a number from an expression
試一試»

數方法toString()不一樣的。

x.toString()
(123).toString()
(100 + 23).toString()
試一試»

在章節數的方法 ,你會發現,可用於數字轉換為字符串更多的方法:

方法 描述
toExponential() 返回一個字符串,圓潤使用指數符號寫了許多。
toFixed() 返回一個字符串,圓潤和小數指定數量的寫了一些。
toPrecision() 返回一個字符串,具有指定長度寫了一些

布爾值轉換為字符串

全球方法String()可以布爾值轉換為字符串。

String(false)        // returns "false"
String(true)         // returns "true"

布爾方法toString()不一樣的。

false.toString()     // returns "false"
true.toString()      // returns "true"

將日期轉換為字符串

全球方法String()可以日期轉換為字符串。

String(Date())      // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

日期方法toString()不一樣的。

Date().toString()   // returns Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

在第三章日期的方法 ,你會發現可以用來日期轉換為字符串的詳細方法:

方法 描述
getDate() 得到一天為數字(1-31)
getDay() 得到的工作日的數字(0-6)
getFullYear() 獲取四位數年份(年)
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 (非數字)。

Number("3.14")    // returns 3.14
Number(" ")       // returns 0
Number("")        // returns 0
Number("99 88")   // returns NaN

在章節數的方法 ,你會發現可用於字符串轉換為數字更多的方法:

方法 描述
parseFloat() 分析字符串並返回一個浮點數
parseInt() 分析字符串並返回一個整數

一元+操作

一元+操作者可以使用一個變量轉換為數字:

var y = "5";      // y is a string
var x = + y;      // x is a number
試一試»

如果變量不能轉換,它仍然會成為一個數字,而是與該值NaN(非數字):

var y = "John";   // y is a string
var x = + y;      // x is a number (NaN)
試一試»

轉換為布爾號碼

全局方法Number()也可以布爾值轉換為數字。

Number(false)     // returns 0
Number(true)      // returns 1

轉換日期為數字

全球方法 號()可用於日期轉換為數字。

d = new Date();
Number(d)          // returns 1404568027739

日期方法getTime()不一樣的。

d = new Date();
d.getTime()        // returns 1404568027739

自動類型轉換

當JavaScript嘗試在一個“錯誤”的數據類型進行操作,它會嘗試將值轉換為一個“正確”的類型。

結果並不總是你所期望的:

5 + null    // returns 5         because null is converted to 0
"5" + null  // returns "5null"   because null is converted to "null"
"5" + 2     // returns 52        because 2 is converted to "2"
"5" - 2     // returns 3         because "5" is converted to 5
"5" * "2"   // returns 10        because "5" and "2" are converted to 5 and 2
試一試»

自動字符串轉換

JavaScript的自動調用變量toString()當您嘗試“產出”的對象或變量函數:

document.getElementById("demo").innerHTML = myVar;

// if myVar = {name:"Fjohn"}  // toString converts to "[object Object]"
// if myVar = [1,2,3,4]       // toString converts to "1,2,3,4"
// if myVar = new Date()      // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"

數字和布爾也可以被轉化,但這並不是非常明顯:

// if myVar = 123             // toString converts to "123"
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

JavaScript的類型轉換表

該表顯示轉換不同的JavaScript值數字,字符串和布爾的結果:

原版的
轉換
為數字
轉換
為String
轉換
布爾
嘗試一下
false0"false"false 嘗試一下 ”
true1"true"true 嘗試一下 ”
00"0"false 嘗試一下 ”
11"1"true 嘗試一下 ”
"0"0"0"true 嘗試一下 ”
"1"1"1"true 嘗試一下 ”
NaNNaN"NaN"false 嘗試一下 ”
InfinityInfinity"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 嘗試一下 ”
null0"null"false 嘗試一下 ”
undefinedNaN"undefined"false 嘗試一下 ”

引號中的值表示字符串值。

紅色數值表示的值(一般般)程序員可能沒有想到。