# 【Day2】變數與資料型別基本介紹 ###### tags: `JavaScript` `14th鐵人賽` 本篇講述JavaScript變數與資料型別基本介紹,更深入的內容將會在後續文章中說明 - 變數概要說明 - 變數的資料型別 - typeof運算子介紹 --- ## 變數 在紀錄資訊我們會使用大腦、紙筆、手機……等工具,而在JavaScript中則可以使用變數儲存資料並作為成運行的基本單位,當程式內容越來越多時,也更方便修改。 用簡易的算式來說明,假設有個變量`x=9`,算式`x+1=10`。而變量的儲存不僅限於數值,我們可以儲存任何數據於變量中。 使用變數時可以用var、let、const三種方式宣告變數內容,而三者使用上也有些差別,本篇先使用var來宣告變數。 `變數宣告的方式:var 變數名稱 = value` ## 變數的資料型別 在JavaScript中支援的型別分為兩類 - 基本型別(Primitives): 字串 string - 訊息內容 數字 number - 數值 布林 boolean - 邏輯運算true、false null - 空、無、不存在 undefined - 未定義、當聲明變量卻沒有賦值時會顯示 ES6新增 symbol - 表示獨一無二的值 - 物件型別(Object):除上外敘述內如容外,其他皆分歸類為物件型別ex:陣列(array)、函式(function) ### typeof運算子介紹 typeof為一元運算, 將他放在運算式或變數前,可以判斷其內容型態,假設為字串,typeof會返回"string” - 輸入字串我們可以在Day1所提到的開發人員工具Console使用typeof來判斷型態,可以輸入字串內容測試 ```jsx var name = "你的名字" typeof name // string ``` - 若輸入其他型別:陣列(array) ```jsx var arr = [1,2,3]; typeof arr // object ``` 直接用typeof判斷陣列、函數時會顯示object,如果要判斷是不是陣列,要改用Object.prototype.toString.call(陣列物件名稱) ```jsx console.log(Object.prototype.toString.call(arr)) ``` - 對於對象、數組、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。 ```jsx typeof null // object ``` - 值得注意的點是:特殊類型的內容ex:NaN、在typeof判斷時,其結果都會回傳number ```jsx typeof NaN // number ```