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