---
# System prepended metadata

title: 克服 JS 奇怪的部分 11.  coercion 強制轉型
tags: ["JavaScript\_", JavaScript 基礎]

---

### coercion

- 在程式語言中，coercion（強制轉換）指的是**將一種資料類型轉換成另一種的過程**。這種轉換可以是隱式的（由程式語言自動執行）或顯式的（由程式員明確指定）。


- 由於 JavaScript 屬於 
  - 動態型別（Dynamic Typing）的程式語言，故在撰寫時，有些時後他會自動幫你轉型資料型別，由後續的範例來深入瞭解吧：


### example：

- 這是一個簡單的運算案例：
  - 正常人都能聯想得到的答案，沒問題。
```js
var a = 3 + 4;
console.log(a); // 7
```

- 但加法運算子，除了數值 number 的相加，亦可處理字串的相加。

```js
var a = "Hello " + " World!"; // -> 空白在結果顯示也會產生空白。
console.log(a);
// outputs:

Hello  World!
```

- 你可能也看過，數值與字串同時在加法運算子的案例：
  - 數值1 `+` 字串"2"，你覺得會是什麼結果？
```js
var a = 1 + "2";
console.log(a);

// outputs: 12
這很奇怪對吧? 為什麼是 12 難道數學失序了??    
```

- 因為，實際上 "2" -> 代表著一個 string 而不是數值。
  - 然而，這邊的操作恰好產生了，**隱式轉型** - Implicit Coercion。
  - 若這邊不太理解的話，在數學處理上可能會是一個大坑。
  - 這正是 JavaScript Engine 自動判讀產生的 **隱式轉型**。  

### 字串與數值，在記憶體中屬於不同類別：


