---
# System prepended metadata

title: 【Day2】變數與資料型別基本介紹
tags: [JavaScript, 14th鐵人賽]

---

# 【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
```