- vừa được xem lúc

[JavaScript] Bài 6 - Boolean & Switching

0 0 6

Người đăng: Semi Art

Theo Viblo Asia

Trong bài viết này, chúng ta sẽ nói về một kiểu dữ liệu mới có tên gọi là boolean và một cấu trúc điều kiện cho phép chúng ta thay đổi cách thức hoạt động của code trong hoàn cảnh nhất định.

Chuyện chưa kể

Đó là một ngày bình thường như bao ngày khác, đã khá muộn và thần mặt trời cũng đã chuyển công tác tới một nửa phần còn lại của Trái Đất, lúc bấy giờ Luna - một trong những lập trình viên đầu tiên của thế giới - đang đi dạo trong khu vườn mây của mình. Cũng như bất kỳ ai trong số chúng ta đang lay hoay tìm kiếm giải pháp cho các tình huống trong cuộc sống, công việc, ..., sau một khoảng thời gian ngắm nhìn những suy nghĩ nội tại của bản thân, cuối cùng thì cô cũng có được một khoảnh khắc "à ha!" cho nỗi niềm mà cô đang trăn trở: "Làm sao để những chiếc máy tính có thể có được khả năng tự ra quyết định hành động trong những trường hợp nhất định?"

"Một đồng xu!" - cô ấy nói - "Những chiếc máy tính cần một đồng xu để có thể tự ra quyết định hành động trong những trường hợp cụ thể!". Và như vậy là một kiểu dữ liệu mới được tạo ra để mô tả 2 trạng thái của 1 đồng xu đang xoay lật.

coin.js

var shouldDoIt;
shouldDoIt = false;
shouldDoIt = true;

Lại một lần nữa, một lỗi đánh máy không đáng có đã khiến kiểu dữ liệu coin có một cái tên gọi chính thức không hề liên quan là boolean và được phổ truyền trên khắp thế giới. Đâu đó trong dòng chảy thời gian cho tới sau này, người ta cũng lại bắt đầu suy nghĩ về thứ gì đó liên quan tới toán học khi kiểu dữ liệu này được nhắc tới.

Boolean - denoting a system of algebraic notation used to represent logical propositions, especially in computing and electronics.
_Google

Như vậy là trước đó chúng ta có từ hàm function thay cho hành động action, và bây giờ là boolean thay cho đồng xu coin. Việc nhắc lại mấy câu chuyện lịch sử như thế này thực ra là vì mình muốn đảm bảo rằng bạn không cảm thấy xa lạ với những công cụ lập trình được xuất phát từ những thứ rất thân thuộc trong cuộc sống của chúng ta. Thế nên từ giờ cứ tự tin mà học tiếp, đừng quan trọng gì mấy từ vựng chuyên môn nhé. Mấy cái đó là để làm tài liệu cho có độ chuẩn thôi, chứ về bản chất thì toàn những thứ bạn đã biết. 😄

Thế bây giờ mấy chiếc máy tính sử dụng mấy đồng xu này như thế nào?

Cũng như cách mà chúng ta sử dụng trong cuộc sống thực tế thôi, tung một đồng xu lên rồi đỡ lấy xem mặt nhìn thấy là mặt nào. Rồi sau đó ra quyết định xử lý công việc. 😄

comparison.js

console.log(1 == 0); // kết quả: false
console.log(1 > 0); // kết quả: true
console.log(1 < 0); // kết quả: false

Các giá trị boolean có thể được nghiệm thu khi chúng ta thực hiện các phép toán so sánh, để nhận định một phép so sánh là đúng true hay sai false. Ở đây để kiểm tra xem giá trị a có bằng giá trị b hay không, chúng ta sử dụng ký hiệu với 2 đấu bằng ==. Bên cạnh đó chúng ta còn 2 phép so sánh nữa là lớn hơn hoặc bằng >= và nhỏ hơn hoặc bằng <=. Ngoài các phép so sánh thì chúng ta còn có thể thu được một giá trị boolean khi thực hiện các phép toán logic như mô tả trong ví dụ dưới đây.

logic.js

console.log(! true ); // kết quả: false
console.log(! false); // kết quả: true console.log(true && true ); // kết quả: true
console.log(true && false); // kết quả: false
console.log(false && true ); // kết quả: false
console.log(false && false); // kết quả: false console.log(true || true); // kết quả: true
console.log(true || false); // kết quả: true
console.log(false || true); // kết quả: true
console.log(false || false); // kết quả: false

Phép toán đầu tiên trong code ví dụ ở trên là lấy giá trị nghịch đảo của giá trị đứng bên phải dấu !. Kế đến là phép toán && được sử dụng để kiểm tra xem đồng thời cả 2 giá trị đều true hay không? Cuối cùng là phép toán || sẽ kiểm tra liệu có bất kỳ giá trị nào trong số 2 giá trị được cung cấp là true hay không?

Sau khi đã biết cách hướng dẫn máy tính làm thao tác tung đồng xu rồi thì chúng ta cần hướng dẫn cách sử dụng kết quả thu được để ra quyết định thực hiện hành động. Bước này cũng như cách mà chúng ta ra quyết định cho các tình huống trong cuộc sống hàng ngày thôi: "Nếu còn khỏe thì học + công việc + chia sẻ kiến thức, nếu không thì... chịu thôi." 😄

condition.js

var beingHealthy = true; if (beingHealthy) { console.log('Học + công việc + chia sẻ kiến thức.');
}
else { console.log('Chịu thôi. :D')
} // Kết quả: 'Học + công việc + chia sẻ kiến thức.'

Và đó là cú pháp điều kiện mà chúng ta đang mong chờ. Trong ví dụ trên thì chúng ta thấy 2 khối code ifelse. Đầu tiên thì máy tính sẽ kiểm tra giá trị điều kiện bên trong cặp ngoặc đơn () của if để xem có nên thực hiện hành động trong cặp ngoặc xoắn {} ở phía sau hay không? Nếu true thì là có và nếu false thì là không. Trong trường hợp false thì máy tính sẽ bỏ qua khối lệnh đặt trong cặp ngoặc xoắn {} đầu tiên và chuyển xuống khối else để thực hiện luôn khối lệnh ở trong cặp ngoặc xoắn thứ hai {}. Trong trường hợp chúng ta chỉ có một câu lệnh đơn ở khối nào thì chúng ta có thể bỏ cặp ngoặc xoắn {} của khối đó đi và code vẫn sẽ hoạt động bình thường.

Cú pháp điều kiện của chúng ta cũng có thể được lược bỏ bớt khối else trong trường hợp không cần chỉ định phương án dự phòng mặc định backup. Hoặc cũng có thể nối tiếp từ khóa else với các khối điều kiện if khác nữa để xử lý một tình huống có nhiều ngã rẽ lựa chọn.

posibility.js

var nthDayOfTheWeek = 1; if (nthDayOfTheWeek == 0) console.log('Chủ Nhật. Ngày ông mặt Trời làm Chủ!');
else if (nthDayOfTheWeek == 1) console.log( 'Số 0 trông mới giống ông mặt Trời.\n' + 'Với lại, lập trình viên, ai lại đếm từ số 1... :D' );
else if (nthDayOfTheWeek == 2) console.log('Thứ Hai');
else if (nthDayOfTheWeek == 3) console.log('Thứ Ba');
else if (nthDayOfTheWeek == 4) console.log('Thứ Tư');
else if (nthDayOfTheWeek == 5) console.log('Thứ Năm');
else if (nthDayOfTheWeek == 6) console.log('Thứ Sáu');
else if (nthDayOfTheWeek == 7) console.log('Thứ Bẩy');
else console.log( 'Bạn không dùng lịch tây phải không?\n' + 'Mình cũng chỉ xem Trăng là chủ yếu thôi.\n' + 'Nhân tiện thì Luna là tên latin của Trăng đấy. :D' );

Trong trường hợp có nhiều ngã rẽ lựa chọn xử lý như trên thì chúng ta còn có một cú pháp thay thế sử dụng từ khóa switch như thế này.

switch.js

var nthDayOfTheWeek = 1; switch (nthDayOfTheWeek) { case 0: console.log('Chủ Nhật. Ngày ông mặt Trời làm Chủ!'); break; case 1: console.log( 'Số 0 trông mới giống ông mặt Trời.\n' + 'Với lại, lập trình viên, ai lại đếm từ số 1... :D' ); break; case 2: console.log('Thứ Hai'); break; case 3: console.log('Thứ Ba'); break; case 4: console.log('Thứ Tư'); break; case 5: console.log('Thứ Năm'); break; case 6: console.log('Thứ Sáu'); break; case 7: console.log('Thứ Bẩy'); break; default: console.log( 'Bạn không dùng lịch tây phải không?\n' + 'Mình cũng chỉ xem Trăng là chủ yếu thôi.\n' + 'Nhân tiện thì Luna là tên latin của Trăng đấy. :D' );
}

Bình thường hóa cái dropdown kỳ lạ

Tới đây thì chúng ta đã có trong tay bộ công cụ để bình thường hóa cái dropdown mà chúng ta xây dựng trong bài viết trước rồi. Những việc cần làm:

  • Sửa lại code HTML để bỏ đi nút ẩn danh sách có nền màu ghi.
  • Nút nhấn còn lại có thể ghi tiêu đề cho danh sách hoặc là 'Show/Hide List' và tên id có thể đổi là #btn-toggle.
  • Chỉnh lại code CSS để lược bỏ code thừa.
  • Trong code JS thì chúng ta cần viết thêm một hàm xử lý sự kiện toggleList(event) để ra quyết định khi nào thì thực hiện showList(event) và khi nào thì thực hiện hideList(event).

Ở đây mình sẽ chỉ đặt code JS để bạn so sánh với cách thực hiện trong code của bạn thôi.

dropdown.js

function toggleList(event) { var theListIsHidden = checkIfTheListIsHidden(); if (theListIsHidden) showList(event); else hideList(event);
} function checkIfTheListIsHidden() { var theList = document.getElementById('the-list'); var className = theList.className; return className.includes('hidden');
} var btn = document.getElementById('btn-toggle');
btn.onclick = toggleList;

Như vậy là chúng ta đã chính thức hoàn thành việc xây dựng một dropdown với JavaScript. Tuy nhiên code của chúng ta vẫn còn một hạn chế, đó là nếu như chúng ta có nhiều dropdown na ná như nhau trong cùng một trang web thì chúng ta sẽ phải viết lặp khá nhiều thành phần trong code. Lý do là vì giải pháp hiện tại của chúng ta đang làm việc xung quanh các bộ chọn id. Nếu như chúng ta có nhiều dropdown đang cùng bày trong một giao diện thì hiển nhiên chúng ta sẽ phải đặt thêm các tên id khác nữa cho các thành phần và tạo thêm tham số id để truyền vào các hàm. Mỗi một dropdown như vậy chúng ta sẽ phải thực hiện lại thao tác gắn hàm xử lý vào một nút nhấn đặc định.

Hạn chế này có thể được loại bỏ khi chúng ta có được sự giúp đỡ của một bộ công cụ mới đó là một kiểu dữ liệu phức hợp được gọi là bộ sưu tập collection và thao tác lặp xử lý qua các thành phần của collection. Bây giờ thì hãy nghỉ giải lao một chút đã. Hẹn gặp lại bạn trong bài viết tiếp theo. 😄

(Sắp đăng tải) [CSS] Bài 7 - Bộ sưu tập & Xử lý lặp

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 136

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 117

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 229