理解 JavaScript 中的数据类型

介紹

資料類型用於分類程式語言中的一種特定資料類型。例如,數字和一串字符是JavaScript中將以不同方式處理的不同資料類型。

這很重要,因為您使用的特定資料類型將決定您可以為其分配什麼值以及您可以對其進行什麼操作。換句話說,要能夠在JavaScript中對變量進行操作,了解給定變量的資料類型至關重要。

在本教程中,我們將介紹JavaScript中資料類型的工作原理以及該語言中的重要資料類型。這不是對資料類型的全面研究,但將幫助您熟悉JavaScript中的可用選項。

動態類型

JavaScript具有動態資料類型,這意味著類型檢查是在運行時而不是編譯時進行的。Python的資料類型也是動態類型。

使用動態類型的語言,同一變量名稱可以用於保存不同的資料類型。

例如,變量t,由let關鍵字定義為變量(請注意let將給定變量限制在作用域內),可以被賦予不同的數據類型,或者可以初始化但保持未定義:

let t = 16;			// t是一個數字
let t = "Teresa";	// t是一個字符串
let t = true;		// t是一個布爾值
let t;				// t未定義

上述的t變量都可以設置為JavaScript中的任何數據類型;在使用之前,它們不需要明確聲明數據類型。

數字

JavaScript只有一種數字類型,沒有對整數和浮點數進行區分。因此,數字可以在JavaScript中帶有或不帶有小數點:

let num1 = 93;
let num2 = 93.00;

在上述兩種情況下,數據類型都是數字,不管數字是否有小數點都是相同的。

在JavaScript中可以使用科學計數法來縮寫非常大或非常小的數字,如下例所示:

let num3 = 987e8;		// 98700000000
let num4 = 987e-8;		// 0.00000987

在JavaScript中,數字被認為精確到15位數。這意味著當達到第16位數後,數字將被四捨五入:

let num5 = 999999999999999;		// 保持為999999999999999
let num6 = 9999999999999999;	// 四捨五入為10000000000000000

除了表示數字外,JavaScript數字類型還有三個可用的符號值:

  • Infinity — 代表一個趨近於無限的
  • -Infinity — 代表一個趨近於負無限的
  • NaN — 代表非數字的數值,代表not a number

如果您計算的數字超出了JavaScript中可用的最大數字,則會返回Infinity-Infinity。這也會發生在未定義的值,例如除以零:

let num7 = 5 / 0;	// 將返回Infinity
let num8 = -5 / 0;	// 將返回-Infinity

在技術術語中,當一個數字超出了JavaScript中的上限1.797693134862315E+308時,將顯示Infinity

同樣地,當一個數字超出了下限-1.797693134862316E+308時,將顯示-Infinity

Infinity這個數字也可以在循環中使用:

while (num9 != Infinity) { 
	// 代碼將執行直到 num9 = Infinity
}

對於不合法的數字,將顯示 NaN。如果嘗試對數字和非數值進行數學運算,將返回 NaN。這在下面的例子中就是這種情況:

let x = 20 / "Shark";	// x 將為 NaN

由於數字 20 不能被字符串 "Shark" 除以,因為它無法被解釋為數字,所以變量 x 的返回值是 NaN

然而,如果一個字符串可以被解釋為數值,則 JavaScript 可以執行數學表達式:

let y = 20 / "5";	// y 將為 4

在上面的例子中,由於字符串 "5" 可以在 JavaScript 中被解釋為數值,它被視為這樣並將與除法的數學運算符 / 一起使用。

當將值 NaN 分配給在操作中使用的變量時,將導致值為 NaN,即使另一個操作數是合法的數字:

let a = NaN;
let b = 37;
let c = a + b; 	// c 將為 NaN

JavaScript 中只有一種數字數據類型。在使用數字時,您輸入的任何數字都將被解釋為數字數據類型;您不需要聲明輸入的數據類型是什麼,因為 JavaScript 是動態類型的。

字串

A string is a sequence of one or more characters (letters, numbers, symbols). Strings are useful in that they represent textual data.

在JavaScript中,字串存在於單引號'或雙引號"之間,因此要創建一個字串,請將一系列字符括在引號中:

let singleQuotes = 'This is a string in single quotes.';
let doubleQuotes = "This is a string in double quotes.";

您可以選擇使用單引號或雙引號,但無論您選擇哪一種,在程序中應保持一致。

程序“Hello, World!”演示了如何在計算機編程中使用字串,因為在下面的alert()中構成該短語Hello, World!的字符是一個字串。

hello.html
<!DOCTYPE HTML>
<html>
<head>
<script>
function helloFunction() {
    alert("Hello, World!");
}
</script>
</head>
<body>
<p><button onclick="helloFunction()">Click me</button></p>
</body>
</html>

當我們運行代碼並單擊Click me按鈕時,我們將收到以下輸出的彈出窗口:

Output
Hello, World!

與其他數據類型一樣,我們可以將字串存儲在變量中:

let hw = "Hello, World!";

並通過調用變量在alert()中顯示字串:

hello.html
...
<script>
let hw = "Hello, World!";
function helloFunction() {
    alert(hw);
}
</script>
...
Output
Hello, World!

我們可以在程序中對字串執行許多操作,以操縱它們以獲得我們正在尋求的結果。字串對於向用戶傳遞信息以及用戶向程序傳遞信息都很重要。

布爾值

布爾數據類型可以是兩個值之一,要麼是,要麼是。布爾用於表示與數學邏輯分支相關的真值,該分支通知計算機科學中的算法。

數學中的許多操作給出的答案要麼為真,要麼為假:

  • 大於
    • 500 > 100
    • 1 > 5
  • 小於
    • 200 < 400
    • 4 < 2
  • 等於
    • 5 = 5
    • 500 = 400

與其他數據類型一樣,我們可以將布爾值存儲在變量中:

let myBool = 5 > 8;	// 假

因為5不大於8,變量myBool的值為

當您在JavaScript中編寫更多程序時,您將更加熟悉布爾值的工作方式,以及不同的函數和操作評估為如何改變程序的運行路線。

數組

一個數組可以在一個變量內容納多個值。這意味著你可以在數組內包含一系列的值並對它們進行迭代。

數組內部的每個項目或值都被稱為一個元素。你可以通過使用索引號來引用數組的元素。

就像字符串是在引號之間定義的一樣,數組是通過在方括號[ ]之間有值來定義的。

例如,字符串數組看起來像這樣:

let fish = ["shark", "cuttlefish", "clownfish", "eel"];

如果我們稱變量為fish,我們將收到以下輸出:

["shark", "cuttlefish", "clownfish", "eel"]

數組是一種非常靈活的數據類型,因為它們是可變的,可以添加、刪除和更改元素值。

對象

JavaScript的對象數據類型可以包含許多值作為名稱:值對。這些對提供了一種方便的方式來存儲和訪問數據。對象字面量語法由以冒號分隔的名稱:值對組成,兩側分別帶有大括號{ }

通常用於保存相關的數據,例如包含在ID中的信息,JavaScript對象字面量看起來像這樣,屬性之間有空格:

let sammy = {firstName:"Sammy", lastName:"Shark", color:"blue", location:"ocean"};

另外,尤其是對於具有大量名稱:值對的對象文字,我們可以將此數據類型寫在多行上,並在每個冒號後加上一個空格:

let sammy = {
    firstName: "Sammy",
    lastName: "Shark",
    color: "blue",
    location: "Ocean"
};

在上述每個示例中,對象變量sammy都有4個屬性:firstNamelastNamecolorlocation。這些都是由冒號分隔的值傳遞的。

處理多種數據類型

雖然您創建的每個程序都將包含多種數據類型,但重要的是要記住,通常您將在相同的數據類型內進行操作。也就是說,您將對數字進行數學運算,或對字符串進行切片。

當您使用可跨數據類型工作的運算符時,例如可以添加數字或連接字符串的+運算符,您可能會獲得意外的結果。

例如,當使用數字和字符串一起的+運算符時,數字將被視為字符串(因此它們將被連接),但數據類型的順序將影響連接。

因此,如果創建一個變量執行以下連接,JavaScript將解釋下面的每個元素都為字符串:

let o = "Ocean" + 5 + 3;

如果您調用o變量,將返回以下值:

Output
Ocean53

然而,如果以數字開頭,兩個數字將在達到程式運行至 "Ocean" 時先相加,然後解釋為一個字串,因此返回的值將是兩個數字的總和連接上該字串:

let p = 5 + 3 + "Ocean";
Output
8Ocean

由於這些意外的結果,您可能會更傾向於在一種數據類型內執行操作和方法,而不是跨越它們。然而,JavaScript 在混合數據類型時不會像一些其他編程語言那樣返回錯誤。

結論

到目前為止,您應該對 JavaScript 中可用的一些主要數據類型有了更好的理解。

這些數據類型中的每一個在您開發 JavaScript 語言的編程項目時都將變得重要。

Source:
https://www.digitalocean.com/community/tutorials/understanding-data-types-in-javascript