JavaScript 是現代網頁不可或缺的程式語言,負責讓原本靜態的頁面能夠回應使用者的各種操作。無論是按鈕點擊、表單驗證、選單展開,還是與伺服器即時交換資料,背後幾乎都有 JavaScript 在運作。這篇文章專為初學者整理,從「JavaScript 是什麼」開始,循序介紹變數、運算子、條件判斷、迴圈、函數、DOM 操作、事件處理與表單驗證等核心觀念,並附上可以直接執行的範例程式碼。只要跟著順序練習,即使您完全沒有程式基礎,也能逐步建立起對 JavaScript 的整體認識。
一、JavaScript 是什麼?
JavaScript 是一種用於建立動態與互動式網頁的程式語言。它通常會和 HTML、CSS 搭配使用,讓原本靜態的網頁能夠回應使用者操作,進一步提升整體使用體驗。
如果把一個網站比喻成一間店面,那麼:
- HTML 是店內的基本結構,例如牆面、門窗與櫃台。
- CSS 是裝潢與陳列風格,決定整體視覺設計。
- JavaScript 則是店員的反應能力,負責回應顧客操作與觸發各種互動功能。
例如當使用者點擊按鈕、輸入表單、切換選單或看到提示訊息時,這些動作大多都仰賴 JavaScript 來實現。
二、為什麼學 JavaScript 很重要?
JavaScript 是現代前端開發的核心技術之一。無論是企業形象網站、購物車網站、會員系統、部落格,甚至是互動式 Web App,都會使用到 JavaScript。
JavaScript 常見用途包括:
- 控制網頁內容的顯示與更新。
- 處理按鈕點擊、滑鼠移動、鍵盤輸入等事件。
- 驗證表單資料是否填寫正確。
- 建立輪播、下拉選單、彈出視窗等互動效果。
- 與伺服器交換資料,做到不重整頁面的更新。
也就是說,如果 HTML 是把網頁「搭起來」,CSS 是把網頁「變好看」,那 JavaScript 就是把網頁「變聰明」。
三、JavaScript 如何加入網頁?
JavaScript 可以直接寫在 HTML 中,也可以另外建立 .js 檔案再引入。兩種方式各有適用情境,初學者先理解差異即可。
方法一:直接寫在 HTML 裡。
<script>
alert("歡迎來到我的網站!");
</script>
方法二:引用外部 JavaScript 檔案。
<script src="script.js"></script>
一般來說,實務上比較常使用外部檔案的方式,因為比較方便管理,也有利於程式碼維護。
四、JavaScript 基本語法介紹
掌握以下十三個基礎主題,就能建立起 JavaScript 的核心觀念。建議您依序閱讀,並實際打開瀏覽器動手練習每一段範例程式碼。
1. Hello, World! 範例
學習任何程式語言時,最經典的第一步通常都是顯示一段簡單訊息。
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>Hello JavaScript</title>
</head>
<body>
<script>
document.write("Hello, World!");
</script>
</body>
</html>
這段程式碼會將 Hello, World! 顯示在頁面中。不過現在更常見的寫法,是透過 DOM 把文字放進指定元素裡:
<p id="demo"></p>
<script>
document.getElementById("demo").textContent = "Hello, World!";
</script>
這種方式更符合現代網站的開發習慣。
2. 變數與資料類型
變數可以想像成一個用來存放資料的容器。JavaScript 常用 let 與 const 來宣告變數。
let name = "John"; let age = 25; let isAdult = true;
JavaScript 常見的資料類型整理如下:
| 資料類型 | 範例 | 用途說明 |
|---|---|---|
| 字串 String | "Taipei" | 文字資料,例如名稱、地址、訊息。 |
| 數字 Number | 100、95.5 | 整數或小數,可用於計算。 |
| 布林值 Boolean | true、false | 表示真或假,常用於條件判斷。 |
| 陣列 Array | ["蘋果","香蕉"] | 儲存多筆有順序的資料。 |
| 物件 Object | { name:"Amy" } | 儲存一筆具名稱屬性的完整資料。 |
以下分別示範各種型別的寫法。字串(String):
let city = "Taipei";
數字(Number):
let price = 100; let score = 95.5;
布林值(Boolean):
let isOpen = true; let isClose = false;
陣列(Array):
let fruits = ["蘋果", "香蕉", "葡萄"];
物件(Object):
let user = {
name: "Amy",
age: 30
};
至於 let 與 const 的差異,整理如下表:
| 比較項目 | let | const |
|---|---|---|
| 可否重新指定 | 可以重新賦值 | 不可重新賦值 |
| 適用情境 | 之後會變動的資料 | 固定不變的資料 |
| 建議用法 | 確定需重新賦值時才用 | 預設優先使用 |
會變動的資料用 let:
let count = 1; count = 2;
固定不變的資料用 const:
const siteName = "My Website";
let,不會變就用 const。實務上建議預設都先用 const,確定需要重新賦值時再改成 let。
3. 運算子
JavaScript 可以透過運算子來進行計算與比較。先看算術運算子:
let a = 10; let b = 3; console.log(a + b); // 13 console.log(a - b); // 7 console.log(a * b); // 30 console.log(a / b); // 3.33... console.log(a % b); // 1
接著是比較運算子:
console.log(10 > 5); // true console.log(10 < 5); // false console.log(10 == "10"); // true console.log(10 === "10"); // false
== 只比較值,=== 會同時比較值與型別。實務上通常建議優先使用 ===,能避免很多奇怪的型別轉換錯誤。
4. 條件判斷
當程式需要依照不同條件做出不同反應時,就會用到條件判斷。以下是 if...else 範例:
let age = 18;
if (age >= 18) {
console.log("您已成年");
} else {
console.log("您還未成年");
}
else if 範例:
let score = 85;
if (score >= 90) {
console.log("優秀");
} else if (score >= 60) {
console.log("及格");
} else {
console.log("不及格");
}
這類語法很常用在:
- 判斷登入狀態。
- 判斷折扣條件。
- 判斷使用者輸入是否符合規則。
5. 迴圈
如果有些動作需要重複執行,就可以使用迴圈。for 迴圈:
for (let i = 1; i <= 5; i++) {
console.log("這是第 " + i + " 次迴圈");
}
while 迴圈:
let i = 1;
while (i <= 5) {
console.log("目前數字是:" + i);
i++;
}
搭配陣列使用:
let fruits = ["蘋果", "香蕉", "葡萄"];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
更簡潔的寫法是 for...of:
let fruits = ["蘋果", "香蕉", "葡萄"];
for (let fruit of fruits) {
console.log(fruit);
}
6. 函數(Function)
函數是把一段功能包裝起來,之後需要時可以反覆呼叫。基本函數:
function greet(name) {
console.log("Hello, " + name);
}
greet("Alice");
有回傳值的函數:
function add(a, b) {
return a + b;
}
let result = add(5, 3);
console.log(result); // 8
箭頭函數(Arrow Function):
const square = num => num * num; console.log(square(6)); // 36
函數的好處是可以讓程式更整齊,也比較容易重複利用。
7. 陣列與物件
這兩者是 JavaScript 裡很常見的資料型態。陣列用來儲存多筆資料:
let colors = ["紅色", "藍色", "綠色"]; console.log(colors[0]); // 紅色
新增資料:
colors.push("黃色");
console.log(colors);
物件則用來儲存有名稱的資料:
let person = {
name: "Tom",
age: 28,
job: "設計師"
};
console.log(person.name);
console.log(person.age);
修改資料:
person.age = 29;
簡單記法是:陣列適合放一串項目,物件適合放一筆完整資料。
8. DOM 操作
DOM 可以理解成網頁中的元素結構。JavaScript 可以透過 DOM 去取得元素,並修改內容、樣式與屬性。更改文字內容:
<p id="text">原本的文字</p>
<script>
document.getElementById("text").textContent = "這段文字已被 JavaScript 更改。";
</script>
更改樣式:
<p id="title">這是一段文字</p>
<script>
const title = document.getElementById("title");
title.style.color = "blue";
title.style.fontSize = "24px";
</script>
加入 class:
<p id="message">歡迎光臨</p>
<script>
document.getElementById("message").classList.add("highlight");
</script>
通常使用 classList.add() 會比直接修改樣式更好維護。
9. 事件處理
事件就是使用者在網頁上的操作,例如點擊、輸入、滑鼠移入等。按鈕點擊事件:
<button id="btn">點擊我</button>
<script>
document.getElementById("btn").addEventListener("click", function() {
alert("您按下了按鈕!");
});
</script>
輸入框事件:
<input type="text" id="username" placeholder="請輸入名稱">
<script>
document.getElementById("username").addEventListener("input", function(event) {
console.log("目前輸入內容:" + event.target.value);
});
</script>
事件處理是 JavaScript 最常見的應用之一,因為互動式網頁幾乎都會用到。
10. 表單驗證
JavaScript 很常被用來檢查表單資料是否填寫完整或格式正確。以下是檢查欄位是否空白的基本範例:
<form id="myForm">
<label for="name">姓名:</label>
<input type="text" id="name">
<button type="submit">送出</button>
</form>
<p id="error" style="color:red;"></p>
<script>
document.getElementById("myForm").addEventListener("submit", function(event) {
const name = document.getElementById("name").value;
const error = document.getElementById("error");
if (name.trim() === "") {
event.preventDefault();
error.textContent = "請輸入姓名";
} else {
error.textContent = "";
}
});
</script>
Email 格式驗證的簡易範例:
function isValidEmail(email) {
return email.includes("@") && email.includes(".");
}
雖然這只是簡化寫法,但對初學者來說很適合先理解概念。實務上若要嚴謹驗證,會改用正規表達式(Regular Expression)。
11. 綜合範例:輸入名字後顯示歡迎訊息
下面這個範例把變數、條件判斷、DOM 操作與事件處理結合在一起。
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>JavaScript 綜合範例</title>
</head>
<body>
<input type="text" id="userName" placeholder="請輸入您的名字">
<button id="welcomeBtn">送出</button>
<p id="result"></p>
<script>
document.getElementById("welcomeBtn").addEventListener("click", function() {
const userName = document.getElementById("userName").value.trim();
const result = document.getElementById("result");
if (userName === "") {
result.textContent = "請先輸入名字";
} else {
result.textContent = "歡迎您," + userName + "!";
}
});
</script>
</body>
</html>
這個小範例很適合初學者練習,因為它一次整合了多個 JavaScript 核心概念。
12. 新手常見錯誤
第一,大小寫打錯。JavaScript 嚴格區分大小寫:
let userName = "Amy"; console.log(username); // 錯誤,找不到 username
第二,把 = 和 === 搞混。= 是指定值,=== 才是比較。
第三,元素還沒載入就先抓取。如果 JavaScript 太早執行,可能會找不到對應元素,可把 script 放在 body 結尾,或使用 DOMContentLoaded 事件。
第四,忘記看瀏覽器 Console。當 JavaScript 沒反應時,先按 F12 打開開發者工具,看 Console 的錯誤訊息,通常會比瞎猜有效很多。
13. 初學者建議學習順序
如果您剛開始接觸 JavaScript,建議依照以下順序循序學習:
- 變數與資料型別。
- 運算子。
- 條件判斷。
- 迴圈。
- 函數。
- 陣列與物件。
- DOM 操作。
- 事件處理。
- 表單驗證。
- API 與非同步概念。
這樣的順序比較穩,也比較不容易在一開始就被進階語法打到懷疑人生。
五、結論
JavaScript 是現代網頁開發不可或缺的程式語言。它不只讓網頁能夠與使用者互動,也能處理資料、驗證表單、控制畫面變化,甚至能與伺服器進行溝通。
對初學者而言,最重要的不是一開始就背熟所有語法,而是先理解每個語法的用途,再透過實際範例反覆練習。只要把基本觀念建立起來,後續無論是學習更進階的 JavaScript、前端框架,或開發更完整的網站功能,都會順利很多。