---
# System prepended metadata

title: 動態型別語言
tags: [JavaScript]

---

# 動態型別語言
###### tags: `JavaScript`
### 變數宣告
JS中宣告變數可以使用
- var
- let
- const
```
var car = {};
let car = {};
const car = 123;
```

所謂動態型別是指
- 無法在開發時期宣告型別(Untyped)
- 只能在執行時期檢查型別(Weak-typed)
### 物件/變數/型別之間的關係
```
// 以下 4 行程式碼在執行的過程中，請問：
// 1. 曾經在記憶體中建立過幾個變數？
// 2. 曾經在記憶體中出現過幾種型別？
// 3. 曾經在記憶體中出現過多少物件？
var a;
a = 1;
a = "a";
a = "a" + a;

// Answer: 1個變數, 3個型別(Undefined/number/string)
// 5個物件(undefined/1/"a"/"a"由cpu做+運算時暫存器所產生/"aa")
```
下圖為以上程式由上而下推倒在記憶體中的資料/變數/型態變換過程
![](https://i.imgur.com/DFWWOh3.png)
沒有給值的變數預設為**Undefined**物件(type = Undefined)
```
var a; // type為Undefined
```