JavaScript 資料型別與變數宣告 | 梧所不學

JavaScript 資料型別與變數宣告 | 梧所不學

更新於 發佈於 閱讀時間約 5 分鐘

當你剛開始學習 JavaScript,最先接觸到的就是「資料型別」與「變數宣告」。這兩個概念雖然看似簡單,卻會影響程式的可讀性與維護性。本文將介紹 JavaScript 的資料型別,以及 var、let、const 三種變數宣告方式的差異與使用時機。

什麼是資料型別?

在 JavaScript 裡,資料型別(Data Types)指的是「資料的型態」,也就是說,程式需要知道你現在處理的是數字、文字、還是其他類型的資料。資料類型可分為兩大類:基本型別與物件型別。

基本型別

  1. 數字 (Number):整數與浮點數,例如 103.14
  2. 字串 (String):用單引號或雙引號包住的文字,例如 "Hello"'你好'
  3. 布林值 (Boolean):true(真)和 false(假),常用來判斷條件是否成立。
  4. 未定義 (Undefined):未定義,當你宣告變數後,但還沒給它值時的預設值。
  5. 空值 (Null):空值,表示變數刻意被設定為「無值」。
  6. 符號 (Symbol):ES6 新增的型別,通常用於物件屬性的唯一鍵。

物件型別

除了上述基本型別,JavaScript 還有「物件型別」(Object),像是:

  1. 物件 (Object):鍵值對的集合,例如 { name: "Alice", age: 30 }
  2. 陣列 (Array):有序的元素集合,例如 [1, 2, 3]
  3. 函式(Function):​可被呼叫的程式區塊,例如 function greet() {}

變數宣告

變數就是用來儲存資料的「容器」。在 JavaScript 裡,主要的宣告方式有三種:varletconst

var

使用 var 宣告的變數,其作用域僅限於函式內部,而非區塊(例如 ifforwhile 等區塊)。​此外,var 宣告的變數會被提升至函式頂部,這可能導致預期之外的行為。

function example() {
var x = 10;
if (true) {
var x = 20; // 同樣的變數,會覆蓋外層的 x
}
console.log(x); // 輸出 20,而非 10
}

if (true) {
var y = 30;
}
console.log(y); // 輸出 30,var 不受區塊作用域限制

let

let 是 ES6 引入的,用於解決 var 的一些問題。​let 宣告的變數僅在其所在的區塊內有效,且不能在同一作用域內重複宣告。​這有助於避免變數覆蓋和提升帶來的問題。

function example() {
let x = 10;
if (true) {
let x = 20; // 不同的變數,僅在 if 區塊內有效
}
console.log(x); // 輸出 10,不受區塊內宣告的影響
}

if (true) {
let z = 40;
}
// console.log(z); // 錯誤:z is not defined,因為 let 受區塊作用域限制

const

const 也是 ES6 引入的,用於宣告常數。​一旦賦值後,不能再被重新賦值。​需要注意的是,若 const 宣告的是物件或陣列,其內容仍然可以被修改,但不能將整個物件或陣列重新賦值。const 的作用域規則與 let 相同,僅限於宣告它的區塊內。

function example() {
const x = 10;
if (true) {
const x = 20; // 不同的常數,僅在 if 區塊內有效
}
console.log(x); // 輸出 10,不受區塊內宣告的影響
}

if (true) {
const obj = { key: 'value' };
obj.key = 'new value'; // 可以修改物件的屬性
// obj = {}; // 錯誤:不能重新賦值
}
// console.log(obj); // 錯誤:obj is not defined,因為 const 受區塊作用域限制

何時使用 var、let、const?

在現代的 JavaScript 開發中,建議盡量避免使用 var,因為它的函式作用域和變數提升可能導致難以預測的行為。​

  • 使用 const:​當變數的值不需要被重新賦值時使用,可以增加程式碼的可讀性和可靠性。
  • 使用 let:​當變數的值需要被重新賦值時使用。​

變數命名規則

變數命名的時候有幾個基本規則:

  • 只能用英文字母、數字、底線(_)、或美元符號($)開頭,不能用數字開頭。
  • 變數名稱區分大小寫,例如 age 和 Age 是不同的變數。
  • 建議用有意義的名稱,方便日後的理解與維護。

資料型別判斷與轉換

JavaScript 是弱型別語言,變數型別可以動態改變。你可以使用 typeof 判斷型別:

typeof 42;         // 'number'
typeof 'Hello';    // 'string'

型別轉換的方式有兩種,分別是隱性轉換與顯性轉換:

// 隱性轉換
let num = '10' + 5;  // '105'(字串)

// 顯性轉換
let realNum = Number('10') + 5;  // 15(數字)

結語

掌握資料型別與變數宣告,是寫好 JavaScript 程式的第一步。在實際撰寫程式時,建議優先使用 let 與 const 來宣告變數,並且注意每個變數裡存放的是什麼型別的資料。這樣不僅能讓你的程式更穩定,也更容易除錯。


avatar-img
梧笙の領域展開
65會員
37內容數
「梧笙」即「吾生」,意即我的生命,朋友都叫我「阿梧(Awu)」,高雄人。我喜歡學習新技能,從程式設計到網路工具,再到社群經營和影片剪輯。日常興趣是打遊戲、看動漫、讀小說和聽音樂。我會把這些興趣寫成文章,如果你有任何想法或問題,歡迎來信到我的郵箱 aowulife109@gmail.com
留言
avatar-img
留言分享你的想法!
梧笙の領域展開 的其他內容
迴圈(Loop)是一個非常重要的基礎觀念。迴圈讓我們可以重複執行某段程式碼,直到達到我們設定的條件為止。本文將介紹 JavaScript 中常見的三種迴圈:for 迴圈、while 迴圈,以及 do...while 迴圈,讓你理解它們的使用方式與差異。
當我們學習 JavaScript 時,「條件判斷」是不可或缺的基礎概念。它讓程式能根據不同情況,執行不同的指令。本文將會介紹 if else 和 switch case 這兩種常見的條件判斷,並說明它們的結構與使用時機。
當你剛開始學習 JavaScript 時,運算子和數學函數是不可或缺的基礎。這些工具讓你能夠處理數字、執行計算,甚至在程式邏輯中做出判斷。本文將介紹 JavaScript 常見的運算子與數學函數。
迴圈(Loop)是一個非常重要的基礎觀念。迴圈讓我們可以重複執行某段程式碼,直到達到我們設定的條件為止。本文將介紹 JavaScript 中常見的三種迴圈:for 迴圈、while 迴圈,以及 do...while 迴圈,讓你理解它們的使用方式與差異。
當我們學習 JavaScript 時,「條件判斷」是不可或缺的基礎概念。它讓程式能根據不同情況,執行不同的指令。本文將會介紹 if else 和 switch case 這兩種常見的條件判斷,並說明它們的結構與使用時機。
當你剛開始學習 JavaScript 時,運算子和數學函數是不可或缺的基礎。這些工具讓你能夠處理數字、執行計算,甚至在程式邏輯中做出判斷。本文將介紹 JavaScript 常見的運算子與數學函數。