類型轉(zhuǎn)換是一種將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型的方法。
在JavaScript中,數(shù)據(jù)類型用于對(duì)一種特定的數(shù)據(jù)類型進(jìn)行分類,確定可以分配給該類型的值以及可以對(duì)其執(zhí)行的操作。
在JavaScript中,有5種不同的數(shù)據(jù)類型可以包含值:
string
number
boolean
object
function
有3種類型的對(duì)象:
Object
Date
Array
還有2種不能包含值的數(shù)據(jù)類型:
null
undefined
typeof運(yùn)算符可以幫助你找到你的變量的類型。
typeof運(yùn)算符返回一個(gè)變量或表達(dá)式的類型。
typeof "" // 返回 "string" typeof "Vishal"// 返回 "string" typeof "42"// 返回 "string" (引號(hào)內(nèi)的數(shù)字為字符串) typeof 42 // 返回 "number" typeof true// 返回 "boolean" typeof false // 返回 "boolean" typeof undefined // 返回 "undefined" typeof null// 返回 "object" typeof {name:"Vishal", age:22} // 返回 "object" typeof [2, 4, 6, 8]// 返回 "object" (不是“數(shù)組”) typeof function myFunc(){} // 返回 "function"測試看看?/?
您可以使用typeof運(yùn)算符查找JavaScript變量的數(shù)據(jù)類型。
作為一種編程語言,JavaScript非常能容忍意外值。因此,JavaScript 將嘗試轉(zhuǎn)換意外值,而不是直接拒絕它們。這種隱式轉(zhuǎn)換稱為類型強(qiáng)制。
例如,在數(shù)學(xué)運(yùn)算中,值會(huì)自動(dòng)轉(zhuǎn)換為數(shù)字。
但是,結(jié)果并不總是您所期望的:
"3" + 2// 返回 "32" (因?yàn)?被轉(zhuǎn)換成“2” ) "3" - 2// 返回 1 (因?yàn)椤?”被轉(zhuǎn)換為3) "3" * "2" // 返回 6 (因?yàn)?nbsp;"3" 和 "2" 被轉(zhuǎn)換為 3 和 2) 2 + true // 返回 3 (因?yàn)?nbsp;true 被轉(zhuǎn)換為 1) 2 + false // 返回 2 (因?yàn)?nbsp;false 被轉(zhuǎn)換為 0) 2 + null // 返回 2 (因?yàn)?nbsp;null 被轉(zhuǎn)換為 0) "2" + null // 返回 "2null" (因?yàn)?nbsp;null 被轉(zhuǎn)換為 "null")測試看看?/?
在某些情況下,我們需要將值從一種數(shù)據(jù)類型顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。
JavaScript提供了許多不同的方法來執(zhí)行此類數(shù)據(jù)類型轉(zhuǎn)換任務(wù)。
在以下各節(jié)中,我們將詳細(xì)討論這些方法。
可以通過調(diào)用String()函數(shù)或x.toString()方法將值顯式轉(zhuǎn)換為字符串。
通過該String()函數(shù),我們將值true傳遞給參數(shù),從而將布爾值轉(zhuǎn)換為字符串:
另外,我們可以將數(shù)字傳遞給函數(shù):
我們可以使用typeof運(yùn)算符檢查類型:
我們可以以類似的方式使用x.toString()方法。我們可以將x替換為變量:
或者,我們可以將值放在括號(hào)內(nèi),而不是使用x.toString()進(jìn)行變量設(shè)置:
(9048).toString();// 返回 "9048" (false).toString(); // 返回 "false" (50 + 20).toString(); // 返回 "70"測試看看?/?
通過使用String()或x.toString()我們可以將Boolean或number數(shù)據(jù)類型的值顯式轉(zhuǎn)換為字符串值,以確保我們的代碼按預(yù)期運(yùn)行。
將值轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)類型時(shí),我們將使用Number()函數(shù)。
首先,我們將把數(shù)字文本字符串轉(zhuǎn)換為數(shù)字,但也可以轉(zhuǎn)換布爾值。
我們可以將一個(gè)數(shù)字字符串傳遞給Number()函數(shù):
我們還可以將字符串分配給變量,然后將其轉(zhuǎn)換:
空格字符串或空字符串將轉(zhuǎn)換為0(零):
注意,非數(shù)字字符串將轉(zhuǎn)換為NaN, NaN表示非數(shù)字。這包括以空格分隔的數(shù)字:
Number("seventy"); // 返回 NaN Number("Hello world"); // 返回 NaN Number("12,000");// 返回 NaN Number("5 7"); // 返回 NaN Number("26-11-2008");// 返回 NaN測試看看?/?
對(duì)于布爾數(shù)據(jù)類型,false的值為0,true的值為1:
如果參數(shù)是Date對(duì)象,則Number()函數(shù)返回自UTC 1970年1月1日午夜以來的毫秒數(shù):
該Number()函數(shù)將非數(shù)字?jǐn)?shù)據(jù)類型轉(zhuǎn)換為數(shù)字。
要將數(shù)字或字符串轉(zhuǎn)換為布爾值,請(qǐng)使用該Boolean()函數(shù)。
任何被解釋為空的值(例如數(shù)字0,空字符串或未定義或NaN或null的值)都將轉(zhuǎn)換為false:
Boolean(0); // 返回 false Boolean("");// 返回 false Boolean(undefined); // 返回 false Boolean(NaN); // 返回 false Boolean(null); // 返回 false測試看看?/?
其他值將轉(zhuǎn)換為true,包括由空格組成的字符串文字:
Boolean(50); // 返回 true Boolean(-50);// 返回 true Boolean(3.14); // 返回 true Boolean("false");// 返回 true Boolean("Hello World"); // 返回 true測試看看?/?
注意,“ 0”作為字符串文字將轉(zhuǎn)換為true,因?yàn)樗且粋€(gè)非空的字符串值:
將數(shù)字和字符串轉(zhuǎn)換為布爾值可以使我們能夠評(píng)估二進(jìn)制術(shù)語內(nèi)的數(shù)據(jù),并且可以利用它來指定程序中的指定流。
toString()方法將數(shù)組轉(zhuǎn)換為(逗號(hào)分隔)數(shù)組值的字符串。
var months = ["Jan", "Feb", "Mar", "Apr", "May"]; document.getElementById("result").innerHTML = months.toString();測試看看?/?
join()方法還將數(shù)組的所有元素轉(zhuǎn)換為新的字符串。
此方法的行為類似于toString(),但是您還可以指定分隔符。
var fruits = ["Banana", "Apple", "Mango"]; fruits.join(" + "); // Banana + Apple + Mango fruits.join(" / "); // Banana / Apple / Mango fruits.join(" © "); // Banana ? Apple ? Mango測試看看?/?
當(dāng)期望原始值時(shí),JavaScript自動(dòng)將數(shù)組轉(zhuǎn)換為逗號(hào)分隔的字符串。
當(dāng)您嘗試輸出數(shù)組時(shí),總是如此。
let fruits = ["Apple", "Mango", "Banana", "Orange"]; document.getElementById("result").innerHTML = fruits;測試看看?/?
split()方法將字符串拆分為子字符串?dāng)?shù)組,然后返回新數(shù)組。
我們將使用split()方法通過以表示的空格字符分隔數(shù)組" "。
var str = 'Air Pollution is introduction of chemicals to the atmosphere.'; var arr = str.split(" ");測試看看?/?
現(xiàn)在我們?cè)?strong>arr變量中有了一個(gè)新數(shù)組,我們可以使用索引號(hào)訪問每個(gè)元素:
在以下示例中,我們將使用“ i”作為分隔符:
var str = 'Air Pollution is introduction of chemicals to the atmosphere.'; var arr = str.split("i");測試看看?/?
如果將空字符串("")用作分隔符,則該字符串將轉(zhuǎn)換為字符數(shù)組:
var str = 'Air Pollution is introduction of chemicals to the atmosphere.'; var arr = str.split("");測試看看?/?