# 筆記_Javascript基礎攻略 變數與資料型別 ----- ###### tags: `javascript` --- [重新認識 JavaScript: Day 03 變數與資料型別](https://ithelp.ithome.com.tw/articles/10190873) ------- JavaScript 中的變數宣告有其一定的規則,變數的第一個字母必須為英文字母、底線 _ 或是錢字號 $ ,後面可以是英文字母、底線 _ 或是錢字號 $ 以及數字。 變數名稱不可以是保留字 (Reserved Words) 與關鍵字 (keyword)。 JavaScript 的語法是有區分大小寫的 也就是說,變數 app 與 App 在 JavaScript 會被認為是兩個不同的變數,而且自 JavaScript 1.3 之後開始支援 Unicode。 宣告方式 - var - let - const 在 ES6 之後宣告「變數」與「常數」,除了 var 之外,還可以透過 let 與 const 做宣告。 但在開發的時候你可能會發現一件事,**就是即便你的變數在事前沒有透過 var 做宣告的時候,仍然可以給定變數初始值,但強烈不建議這麼做**。 ### 要記得一句話,所有沒有透過 var 宣告的變數都會自動變成全域變數。 --- 基本型別又分成 string、number、boolean、null、undefined 幾種 [註1],除了上述幾種之外,都可以歸類至物件型別 (Object)。 註1: ES6 之後多了新的型別:Symbol。 ## null 與 undefined 在大多數的程式語言中,都有 null 或是類似空值類型的設定,而 JavaScript 又多了一個 undefined,這裡就把它們放在一起比較。 這兩個類型的共通點是,null 型別只有一種值,就是 null ,而 undefined 類型也只有一種值,就是 undefined。 ```javascript= var a; // undefined, 尚未給值,未定義 var b = null; // null, 明確代表此變數沒有值 ``` 其實可以看出,當變數 a 被宣告時,在沒有給變數任何數值的情況下,變數的預設值會是 undefined,而變數 b 則是直接被明確地設定為 null 。 雖然這兩種值透過 Boolean() 強制轉型成 boolean 時,都會代表 false 的意思,但兩者間仍然有意義上的差別。 - undefined 代表的是「(此變數) 還沒有給值,所以不知道是什麼」 - null 代表的是「(此變數可能曾經有值,可能沒有值) 現在沒有值」 ## 陣列 陣列的宣告方式 ```javascript= var array1 = new Array(); var array2 = []; // 陣列實字 (Array literal): ``` JavaScript 的陣列可以看作是一種特別的「物件」,同樣是零至多個元素的集合,且並沒有規定它能放什麼東西進去。 陣列內可以是原始的資料類型、其他陣列、函式等等。 要注意的是,陣列是個有順序性的集合,且只能透過 [] 來存取。