JavaScript 類型轉換總結

來源:互聯網
上載者:User

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


引號中的值代表字串類型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.