1. 程式人生 > 實用技巧 >【JavaScript】基本型別

【JavaScript】基本型別

以下內容為學習記錄,可以參考 MDN 原文。

環境

  • node v12.18.1
  • npm 6.14.5
  • vscode 1.46
  • Microsoft Edge 83

概念

基本型別(基本數值、基本資料型別)是一種既非物件也無方法的資料。
在 JavaScript 中,共有7種基本型別:

  • string
  • number
  • bigint
  • boolean
  • null
  • undefined
  • symbol (ECMAScript 2016新增)。

多數情況下,基本型別直接代表了最底層的語言實現。

所有基本型別的值都是不可改變的。但需要注意的是,基本型別本身和一個賦值為基本型別的變數的區別。
變數會被賦予一個新值,而原值不能像陣列、物件以及函式那樣被改變。

示例1

這個示例會幫助你瞭解基本型別不可改變的事實。

// 使用字串方法不會改變一個字串
var bar = "baz";
console.log(bar);               // baz
bar.toUpperCase();
console.log(bar);               // baz

// 使用陣列方法可以改變一個數組
var foo = [];
console.log(foo);               // []
foo.push("plugh");
console.log(foo);               // ["plugh"]

// 賦值行為可以給基本型別一個新值,而不是改變它
bar = bar.toUpperCase();       // BAZ

示例2

下面的示例將讓你體會到JavaScript是如何處理基本型別的。

// 基本型別
let foo = 5;

// 定義一個貌似可以改變基本型別值的函式
function addTwo(num) {
   num += 2;
}
// 和前面的函式一樣
function addTwo_v2(foo) {
   foo += 2;
}

// 呼叫第一個函式,並傳入基本型別值作為引數
addTwo(foo);
// Getting the current Primitive value
console.log(foo);   // 5

// 嘗試呼叫第二個函式...
addTwo_v2(foo);
console.log(foo);   // 5

包裝物件

除了 null 和 undefined 之外,所有基本型別都有其對應的包裝物件:

  • String 為字串基本型別。
  • Number 為數值基本型別。
  • BigInt 為大整數基本型別。
  • Boolean 為布林基本型別。
  • Symbol 為字面量基本型別。

這個包裹物件的 valueOf() 方法返回基本型別值。