運算子與流程控制
算術運算子
let a = 10, b = 3;
console.log(a + b); // ← 13(加)
console.log(a - b); // ← 7(減)
console.log(a * b); // ← 30(乘)
console.log(a / b); // ← 3.3333...(除)
console.log(a % b); // ← 1(取餘數:10 ÷ 3 = 3 餘 1)
console.log(a ** b); // ← 1000(次方:10³)
// 遞增 / 遞減
let x = 5;
x++; // ← x 變成 6(等同 x = x + 1)
x--; // ← x 變回 5
比較運算子
console.log(5 == "5"); // ← true(寬鬆比較,會轉型)
console.log(5 === "5"); // ← false(嚴格比較,型態不同)
console.log(5 !== "5"); // ← true(嚴格不等於)
console.log(5 > 3); // ← true
console.log(5 >= 5); // ← true
console.log(5 < 3); // ← false
邏輯運算子
// && AND — 兩個都 true 才 true
console.log(true && true); // true
console.log(true && false); // false
// || OR — 其中一個 true 就 true
console.log(false || true); // true
console.log(false || false); // false
// ! NOT — 反轉
console.log(!true); // false
console.log(!0); // true(0 是 falsy)
// 短路求值
let user = null;
let name = user && user.name; // ← user 是 null → 直接回傳 null,不會報錯
let fallback = name || "訪客"; // ← name 是 falsy → 回傳 "訪客"
// ?? 空值合併(ES2020)
let value = null ?? "預設值"; // ← "預設值"(只在 null/undefined 時觸發)
let zero = 0 ?? "預設值"; // ← 0(0 不是 null/undefined)
// 對比 ||:
let zeroOr = 0 || "預設值"; // ← "預設值"(因為 0 是 falsy)
if / else
let score = 85;
if (score >= 90) { // ← 條件 1
console.log("優秀");
} else if (score >= 60) { // ← 條件 2
console.log("及格");
} else { // ← 以上都不符
console.log("不及格");
}
// 三元運算子(簡化的 if-else)
let result = score >= 60 ? "及格" : "不及格";
// 等同於 if (score >= 60) result = "及格"; else result = "不及格";
switch
let day = "Monday";
switch (day) {
case "Monday":
case "Tuesday":
case "Wednesday":
case "Thursday":
case "Friday":
console.log("工作日");
break; // ← break 跳出,不加會繼續往下執行
case "Saturday":
case "Sunday":
console.log("週末");
break;
default:
console.log("未知");
}
for 迴圈
// 基本 for
for (let i = 0; i < 5; i++) { // ← i 從 0 到 4
console.log(i); // 輸出:0, 1, 2, 3, 4
}
// for...of(遍歷值)— 用於陣列
let fruits = ["蘋果", "香蕉", "橘子"];
for (let fruit of fruits) { // ← fruit 是每個元素的值
console.log(fruit); // 蘋果, 香蕉, 橘子
}
// for...in(遍歷鍵)— 用於物件
let person = { name: "小明", age: 20 };
for (let key in person) { // ← key 是屬性名稱
console.log(`${key}: ${person[key]}`);
// name: 小明, age: 20
}
while 迴圈
// while — 條件成立就執行
let count = 0;
while (count < 3) { // ← 先檢查條件
console.log(count); // 0, 1, 2
count++;
}
// do...while — 至少執行一次
let num = 10;
do {
console.log(num); // 10(至少執行一次)
num++;
} while (num < 3); // ← 條件不符,但已經執行過了
break 和 continue
// break — 跳出迴圈
for (let i = 0; i < 10; i++) {
if (i === 5) break; // ← i 到 5 就停
console.log(i); // 0, 1, 2, 3, 4
}
// continue — 跳過本次,繼續下一次
for (let i = 0; i < 5; i++) {
if (i === 2) continue; // ← 跳過 i=2
console.log(i); // 0, 1, 3, 4
}