JS基本資料型別有哪些?

2022-03-15 19:00:08
在計算機中,如果程式想要對某一塊記憶體空間中的資料進行儲存和操作,首先要明確的是該空間內資料的儲存方式和操作方式。

舉兩個例子:
  • 例1,變數中儲存的是資料本身還是資料在記憶體空間中的位置?這決定著這些資料的複製方式。
  • 例2,變數中的資料可以執行什麼操作?是算術運算還是邏輯判斷,抑或是文書處理?

這就需要我們對這些記憶體空間中的資料,即變數的值進行歸類。例如將用來做算術運算的資料歸為一類,將用於文書處理的資料歸為另一類。在程式設計術語上,這些歸類被人們約定俗成地稱為型別(type)

簡而言之,變數的值所屬的型別決定了該變數的儲存形式及其可以執行的操作。下面從變數的資料型別開始介紹

具體到 JavaScript 語言中,變數的資料型別可以分成基本資料型別和物件型別兩種。

JS 基本資料型別

以下是 JavaScript 所支援的 5 種基本資料型別。

1) Number

Number 是數位型別,這一型別的資料包括以下幾種:
  • 整數與浮點數:例如 0、1、−1、−0.25、3.14 等。
  • 八進位制數與十六進位制數:例如 0377、0xff 等。
  • 指數:即用科學記數法表示的數位,例如 1e+2、10e+3 等。
  • Infinity 與 NaN:這是 JavaScript 中的兩個特殊數位。

關於 Infinity 和 NaN:
  • Infinity 表示的是一個超出 JavaScript 接受範圍的數位,相當於 JavaScript 世界中的“無窮大”,和數學中有正無窮大和負無窮大一樣,這類值也是有 Infinity 和 −Infinity 兩種的。
  • 而 NaN 則表示的是一種不符合規範但仍屬於數位型別的數位,例如當一個數位與一個字串相乘時,結果就會是一個 NaN。

2) String

String 是字串型別,這一型別的資料主要指的是被反引號、單引號或雙引號所引起來的、由任意個字元組成的字元序列,例如 a、123、"one"、"one two three" 等。

另外,出於程式碼可讀性方面的考慮,建議讀者在字串的表示風格上保持一致,不要時而用單引號,時而用雙引號。當然,ES6 新增的反引號表示的字串形式比較特殊,它主要用於建立模板字串,通常只有在特定場景中才會用到它。

例如,當我們需要將某個變數的值嵌入某個 HTML 標籤中時,可以這樣做:
const name = 'owlman';
console.log('<h1> ${ name }</h1>'); // 輸出 <h1> owlman </h1>
在模板字串中,我們只需要使用${[變數名]}這樣的語法就可以將現有變數的值嵌入字串中,這裡的[變數名]可以是任何已在別處定義的變數的名稱。這樣就避免了一系列拼接字串的麻煩,既簡潔又不易出錯。

3) Boolean

Boolean 是布林型別,這一型別的資料只有 true 和 false 兩種值,主要用於關係運算和邏輯運算。

4) undefined

這是 JavaScript 中的一個特殊值,當我們存取一個不存在的變數或未被初始化的變數時,程式就會返回一個 undefined 值。

5) null

這也是 JavaScript 中的一個特殊值,通常是指沒有值或值為空,不代表任何東西。

null 與 undefined 最大的不同在於,被賦予 null 的變數會被認為是初始化了的,只不過它是個空值。

在 JavaScript 中,任何不屬於上述 5 種基本資料型別的值都會被視為物件,某些執行環境甚至將 null 值也視為一個物件。

作為一種動態型別的指令碼語言,JavaScript 的資料型別是直接與“值”,而不是與變數相關聯的。這也就意味著,在 JavaScript 程式碼的執行過程中,變數的型別是可以隨著變數的值而變化的。

例如,如果我們在程式碼中定義了一個名為 x 的變數,x 是可以初始值為數位,然後在執行過程中被重新賦予其他型別的值的,JavaScript 的執行環境會負責自動識別變數的型別。

下面,我們可以用型別操作符 typeof 來驗證一下(該操作符會返回一個代表資料型別的字串),開啟 node 直譯器並設為互動模式,執行下面圖片的測試。