Đề Luyện Tập JavaScript Cho Beginner (Phần 2)
— Javascript — 12 min read
Tổng Quan
Phần thứ hai trong bộ đề luyện tập JavaScript dành cho người mới bắt đầu học lập trình. Trong phần này, chúng ta sẽ tập trung vào cấu trúc điều kiện: if
, if-else
, if-else if
và switch-case
.
Giống như trong cuộc sống hàng ngày, bạn thường phải đưa ra quyết định dựa trên hoàn cảnh (ví dụ: "Nếu trời mưa, tôi sẽ mang ô"). Trong lập trình, cấu trúc điều kiện giúp máy tính làm điều tương tự. Thông qua các bài tập thực hành, bạn sẽ hiểu cách điều khiển luồng chương trình dựa trên các điều kiện khác nhau.
Luyện tập là cách tốt nhất để thành thạo JavaScript!
Hãy đảm bảo thực hành tất cả các bài tập dưới đây.
Phần 2: Cấu trúc Điều kiện
Kiến thức cần nhớ
-
Câu lệnh
if
: Dùng để thực thi một khối lệnh nếu một điều kiện là đúng.- If thiếu (Simple
if
): Chỉ có phầnif
, không cóelse
. Cú pháp:if (điều_kiện) { khối_lệnh }
- If đầy đủ (
if-else
): Có cả phầnif
vàelse
. Cú pháp:if (điều_kiện) { khối_lệnh_1 } else { khối_lệnh_2 }
- If thiếu (Simple
-
Câu lệnh
if
bậc thang (if-else if
): Sử dụngelse if
để kiểm tra nhiều điều kiện theo thứ tự. Rất hữu ích khi bạn có nhiều hơn hai khả năng. Cú pháp:if (điều_kiện_1) { khối_lệnh_1 } else if (điều_kiện_2) { khối_lệnh_2 } else { khối_lệnh_3 }
-
Câu lệnh
if
lồng nhau: Đặt một câu lệnhif
bên trong một câu lệnhif
khác. Hữu ích cho các kịch bản phức tạp, nhưng hãy cẩn thận để không làm code quá khó đọc. Cú pháp:if (điều_kiện_1) {if (điều_kiện_2) {khối_lệnh}} -
Câu lệnh
switch-case
: So sánh một biểu thức với nhiều giá trị (case) khác nhau. Đây là một giải pháp thay thế gọn gàng choif-else if
khi bạn chỉ kiểm tra một biến duy nhất. Cú pháp:switch (biểu_thức) {case giá_trị_1: khối_lệnh_1; break;case giá_trị_2: khối_lệnh_2; break;default: khối_lệnh_mặc_định;}
Lưu ý quan trọng: Trong JavaScript, bạn nên ưu tiên sử dụng toán tử so sánh nghiêm ngặt
===
thay vì==
. Toán tử===
kiểm tra cả giá trị và kiểu dữ liệu, giúp tránh các lỗi không mong muốn. Chúng ta sẽ tìm hiểu kỹ hơn ở phần sau.
- Từ khóa
break
: Dùng trongswitch-case
để thoát khỏi cấu trúc sau khi một case được thực thi. Nếu không cóbreak
, code sẽ tiếp tục chạy xuống các case tiếp theo ("fall-through"). - Từ khóa
default
: Case mặc định trongswitch-case
, được thực thi khi không có case nào khớp.
Bài tập cốt lõi
Lời khuyên: Hãy tự mình làm các bài tập trước khi xem lời giải. Sau đó so sánh kết quả của bạn với lời giải để học hỏi thêm!
1. Sử dụng câu lệnh if
thiếu (không có else)
- Khai báo một biến
age
với giá trị bất kỳ - Sử dụng câu lệnh
if
thiếu để kiểm tra nếuage >= 18
, hiển thị thông báo "Bạn đã đủ tuổi lái xe"
Xem lời giải
var age = 22;
if (age >= 18) { console.log("Bạn đã đủ tuổi lái xe");}
2. Sử dụng câu lệnh if
đầy đủ (if-else)
- Khai báo biến
score
với một giá trị từ 0-100 - Sử dụng câu lệnh
if-else
để kiểm tra nếuscore >= 50
, hiển thị "Đạt", ngược lại hiển thị "Không đạt"
Xem l ời giải
var score = 75;
if (score >= 50) { console.log("Đạt");} else { console.log("Không đạt");}
3. Sử dụng câu lệnh if
bậc thang (if-else if)
- Khai báo biến
hour
với giá trị từ 0-23 (đại diện cho giờ trong ngày) - Sử dụng câu lệnh
if
bậc thang để hiển thị lời chào phù hợp:- Nếu hour < 12: "Chào buổi sáng"
- Nếu hour < 18: "Chào buổi chiều"
- Còn lại: "Chào buổi tối"
Xem lời giải
var hour = 14;
if (hour < 12) { console.log("Chào buổi sáng");} else if (hour < 18) { console.log("Chào buổi chiều");} else { console.log("Chào buổi tối");}
4. Sử dụng câu lệnh if
lồng nhau
- Khai báo biến
isLoggedIn
với giá trị boolean (true
hoặcfalse
) - Khai báo biến
userRole
với giá trị là"admin"
hoặc"user"
- Sử dụng câu lệnh
if
lồng nhau để:- Kiểm tra xem người dùng đã đăng nhập chưa (
isLoggedIn
). - Nếu đã đăng nhập, kiểm tra vai trò của họ (
userRole
). - Hiển thị lời chào phù hợp: "Chào mừng admin!" hoặc "Chào mừng user!".
- Nếu chưa đăng nhập, hiển thị "Vui lòng đăng nhập để tiếp tục."
- Kiểm tra xem người dùng đã đăng nhập chưa (
Xem lời giải
var isLoggedIn = true;var userRole = "admin";
if (isLoggedIn) { console.log("Đã đăng nhập thành công."); if (userRole === "admin") { console.log("Chào mừng admin!"); } else { console.log("Chào mừng user!"); }} else { console.log("Vui lòng đăng nhập để tiếp tục.");}
5. Sử dụng câu lệnh switch-case
- Khai báo biến
dayNumber
với giá trị từ 0-6 (0: Chủ nhật, 1-6: Thứ 2 đến Thứ 7) - Sử dụng câu lệnh
switch-case
để hiển thị tên ngày trong tuần. - Lưu ý: Hãy chú ý vai trò của
break
. Nếu không có nó, chương trình sẽ thực thi cả nhữngcase
phía saucase
đúng.
Xem lời giải
var dayNumber = 3;var dayName;
switch (dayNumber) { case 0: dayName = "Chủ Nhật"; break; case 1: dayName = "Thứ Hai"; break; case 2: dayName = "Thứ Ba"; break; case 3: dayName = "Thứ Tư"; break; case 4: dayName = "Thứ Năm"; break; case 5: dayName = "Thứ Sáu"; break; case 6: dayName = "Thứ Bảy"; break; default: dayName = "Ngày không hợp lệ";}
console.log("Hôm nay là:", dayName);
6. Bài tập tổng hợp: Xác định mùa trong năm
- Khai báo biến
month
với giá trị từ 1-12 (tháng trong năm) - Thử nghiệm hai phương pháp khác nhau:
- Sử dụng cấu trúc
if
bậc thang để xác định mùa - Sử dụng
switch-case
với tính năng "fall-through" (các case liên tiếp không có break)
- Sử dụng cấu trúc
- Quy tắc xác định:
- Mùa xuân: tháng 3-5
- Mùa hè: tháng 6-8
- Mùa thu: tháng 9-11
- Mùa đông: tháng 12, 1, 2
Xem lời giải - Cách 1: Sử dụng if bậc thang
// Khai báo biến monthvar month = 7;var season;
// Xác định mùa bằng if-else ifif (month >= 3 && month <= 5) { season = "Xuân";} else if (month >= 6 && month <= 8) { season = "Hè";} else if (month >= 9 && month <= 11) { season = "Thu";} else if (month === 12 || month === 1 || month === 2) { season = "Đông";} else { season = "Tháng không hợp lệ";}
console.log("Tháng", month, "thuộc mùa", season);
Xem lời giải - Cách 2: Sử dụng switch-case với fall-through
// Khai báo biến monthvar month = 7;var season;
// Xác định mùa bằng switch-caseswitch (month) { case 3: case 4: case 5: season = "Xuân"; break; case 6: case 7: case 8: season = "Hè"; break; case 9: case 10: case 11: season = "Thu"; break; case 12: case 1: case 2: season = "Đông"; break; default: season = "Tháng không hợp lệ";}
console.log("Tháng", month, "thuộc mùa", season);
Hướng dẫn và lời khuyên
Cách học hiệu quả: Hãy thử giải các bài tập trước khi xem đáp án. Sau đó so sánh giải pháp của bạn với lời giải. Phương pháp này giúp bạn rèn luyện kỹ năng giải quyết vấn đề và hiểu sâu hơn về các khái niệm.
Cách thực thi code JavaScript
- Mở trình duyệt web (Google Chrome hoặc Firefox là lựa chọn phổ biến)
- Mở Developer Console bằng cách:
- Nhấn phím tắt
F12
hoặcCtrl+Shift+J
(Windows/Linux) hoặcCmd+Option+J
(Mac) - Hoặc chuột phải vào trang web trống và chọn "Inspect" > "Console"
- Nhấn phím tắt
- Copy từng đoạn code và dán vào Console
- Nhấn Enter để thực thi và xem kết quả ngay lập tức
Phương pháp thực hành hiệu quả
- Thực hành từng bước: Thực hiện lần lượt từng bài tập theo hướng dẫn
- Thử nghiệm: Thay đổi giá trị của các biến và dự đoán kết quả trước khi chạy code
- Ghi chú: Viết lại ý hiểu của bạn về mỗi khái niệm sau khi thực hành
Lưu ý quan trọng khi sử dụng cấu trúc điều kiện
-
Toán tử so sánh:
==
so sánh giá trị (không kiểm tra kiểu dữ liệu)===
so sánh cả giá trị và kiểu dữ liệu (khuyến nghị sử dụng)!=
và!==
là phủ định của các toán tử trên
-
Giá trị truthy và falsy:
- Falsy: những giá trị được coi là
false
trong ngữ cảnh logic. Gồm:false
,0
,-0
,0n
(BigInt),''
(chuỗi rỗng),null
,undefined
,NaN
. - Truthy: mọi giá trị khác falsy đều là
true
trong ngữ cảnh logic (ví dụ:'hello'
,123
,true
,[]
,{}
)
- Falsy: những giá trị được coi là
-
Sử dụng ngoặc nhọn :
- Luôn sử dụng ngoặc nhọn, ngay cả với khối lệnh đơn
- Đảm bảo code dễ đọc và tránh lỗi logic
Ví dụ thực tế
- Kiểm tra điều kiện vay:
var age = 25;var hasStableIncome = true;var creditScore = 700;
if (age >= 21 && hasStableIncome && creditScore >= 650) { console.log("Đủ điều kiện vay");} else { console.log("Không đủ điều kiện vay");}
- Xác định phương thức thanh toán:
var paymentMethod = "credit";
switch (paymentMethod) { case "credit": console.log("Thanh toán bằng thẻ tín dụng"); break; case "debit": console.log("Thanh toán bằng thẻ ghi nợ"); break; case "cash": console.log("Thanh toán bằng tiền mặt"); break; default: console.log("Phương thức thanh toán không hợp lệ");}
Mẹo: Sử dụng toán tử ba ngôi
Toán tử ba ngôi (condition ? exprIfTrue : exprIfFalse
) là cách rút gọn của if-else
khi bạn cần gán giá trị dựa trên một điều kiện. Nó giúp code ngắn gọn hơn, nhưng hãy sử dụng một cách khôn ngoan.
// Thay vì viết:var message;if (age >= 18) { message = "Đủ tuổi";} else { message = "Chưa đủ tuổi";}
// Có thể viết gọn lại:var message = age >= 18 ? "Đủ tuổi" : "Chưa đủ tuổi";console.log(message);
Khi nào nên dùng?
- Nên dùng: Cho các điều kiện đơn giản và phép gán giá trị.
- Nên tránh: Khi logic phức tạp. Một câu lệnh
if-else
đầy đủ sẽ dễ đọc và dễ bảo trì hơn.
Gợi ý mở rộng
- Tìm hiểu về toán tử ba ngôi:
condition ? expressionIfTrue : expressionIfFalse
- Thử kết hợp nhiều câu điều kiện lồng nhau để giải quyết vấn đề phức tạp
- Thử nghiệm với các thuật toán đơn giản như tìm số lớn nhất trong 3 số
Lưu ý: Hãy lưu lại các đoạn code đã thực hành vào một file .js riêng để ôn tập sau này!
Bài tập mở rộng (Tự thực hành)
-
Tính hóa đơn điện thoại
- Khai báo biến
minutes
(số phút gọi) vàmessages
(số tin nhắn). - Tính cước phí theo quy tắc: 0.1$/phút và 0.05$/tin nhắn.
- Nếu tổng cước phí (chưa giảm giá) lớn hơn 20$, hãy áp dụng giảm giá 10% trên tổng hóa đơn. In ra số tiền cuối cùng.
- Khai báo biến
-
Kiểm tra năm nhuận
- Viết chương trình kiểm tra một biến
year
có phải là năm nhuận hay không. - Gợi ý: Một năm là năm nhuận nếu nó thỏa mãn một trong hai điều kiện sau:
- Chia hết cho 4 nhưng không chia hết cho 100.
- Chia hết cho 400.
- Sử dụng cấu trúc
if
lồng nhau hoặc toán tử logic (&&
,||
) để giải quyết.
- Viết chương trình kiểm tra một biến
-
Máy tính chỉ số BMI
- BMI = cân nặng (kg) / (chiều cao (m) * chiều cao (m))
- Phân loại: < 18.5 (Thiếu cân), 18.5-24.9 (Bình thường), 25-29.9 (Thừa cân), >= 30 (Béo phì)
- Sử dụng
if-else if
để hiển thị phân loại dựa vào chỉ số BMI đã tính.
Kết luận
Trong phần này, chúng ta đã đi sâu vào các cấu trúc điều kiện trong JavaScript. Việc nắm vững if
, if-else
, if-else if
, và switch-case
là nền tảng vững chắc để bạn giải quyết các bài toán lập trình phức tạp hơn.
Những điểm chính cần nhớ:
- Sử dụng
if
khi chỉ cần kiểm tra một điều kiện. - Sử dụng
if-else
khi có hai luồng xử lý đối lập. - Sử dụng
if-else if
khi cần kiểm tra nhiều điều kiện độc lập. - Sử dụng
switch-case
như một giải pháp thay thế gọn gàng choif-else if
khi so sánh một biến với nhiều giá trị cụ thể.
Để nâng cao kỹ năng lập trình của bạn:
- Kết hợp kiến thức về biến và toán tử từ Phần 1 với cấu trúc điều kiện.
- Thử thách bản thân với các bài tập mở rộng và tự đặt ra các vấn đề tương tự.
- Đọc thêm bài viết chi tiết về Cấu trúc điều kiện trong JavaScript.
Hãy tiếp tục duy trì thói quen thực hành. Trong phần tiếp theo, chúng ta sẽ khám phá về vòng lặp - một công cụ mạnh mẽ để thực thi mã lặp đi lặp lại.
Lời nhắc: Lập trình là một kỹ năng thực hành. Càng code nhiều, bạn càng giỏi!