# 動態型別語言 ###### 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 ```