Chào mừng bạn đến với Vimentor!

Hỏi đáp
Đăng ký

14. Kỹ thuật áp dụng Javascript hiệu quả phép toán logic AND và OR

Kỹ thuật áp dụng Javascript hiệu quả phép toán logic AND và OR

Phép toán && sẽ kiểm tra cho đến biểu thức/biến có giá trị đúng ngoài cùng bên phải, hay nói cách khác áp dụng quy tắc đoản mạch phép toán && sẽ trả về false ngay khi bắt gặp giá trị false đầu tiên.

Ví dụ:

var ketqua = undefined && 1;
console.log(ketqua);

→ undefined;

Rõ ràng ở đây, biểu thức sẽ không bao giờ được kiểm tra đến giá trị 1, mà nó trả về ngay bằng undefined khi gặp giá trị undefined đầu tiên.

Hay ở ví dụ sau:

var ketqua = 0 && ["1", "2"];
console.log(ketqua);

→ 0;

Ở đây, biểu thức cũng sẽ không bao giờ kiểm tra đến mảng đằng sau, mà nó trả về ngay giá trị 0 khi gặp nó đầu tiên.

Hoặc:

var ketqua = "" && {ten: "An", tuoi: "7"};
console.log(ketqua);

→ "";

Ở đây, biểu thức cũng không bao giờ kiểm tra đến đối tượng đằng sau, mà nó trả về ngay giá trị chuỗi rỗng khi nó quét đến đầu tiên.

Khi tất cả các giá trị bên trong là hợp lệ, toán tử && sẽ trả về giá trị hợp lệ sau cùng mà nó bắt gặp.

var ketqua = "An" && "Minh";
console.log(ketqua);

→ "Minh";

var ketqua = "Minh" && "An";
console.log(ketqua);

→ "An";

Khi tất cả các giá trị bên trong là không hợp lệ, toán tử && sẽ trả về giá trị không hợp lệ đầu tiên mà nó bắt gặp.

var ketqua = "" && undefined;
console.log(ketqua);

→  ""; 

var ketqua = undefined && "";
console.log(ketqua);

→ undefined;

Kế tiếp, ta sẽ tìm hiểu về phép toán Logic OR. Một ứng dụng rất hay của ||, đó là khi ta cần khởi tạo giá trị một biến, nếu biến đó chưa được khởi tạo. Thông thường, ta có thể áp dụng câu điều kiện 3 ngôi như sau:

var ketqua = ketqua ? ketqua : 1;

Ý nghĩa câu lệnh như sau: Nếu biến kết quả có giá trị khác undefined thì ta giữ nguyên, ngược lại thì ta gán giá trị của biến kết quả bằng 1.

Tuy nhiên ở đây ta có thể áp dụng phép toán || để cho kết quả tương đương và ngắn gọn hơn trong cách thể hiện.

var ketqua = ketqua || 1;

Phép toán || sẽ cố gắng tìm ra giá trị đầu tiên không phải là giá trị sai. Nên ở phép gán trên, nếu kết quả không phải là undefined sẽ trả về ketqua, ngược lại trả về 1.

Ví dụ:

var ketqua = 1 || undefined;
console.log(ketqua);

→ 1;

Rõ ràng ở đây, biểu thức sẽ không bao giờ kiểm tra đến giá trị undefined, mà nó trả về ngay 42 khi gặp giá trị khác undefined đầu tiên.

Hay ở ví dụ sau:

var ketqua = ["1", "2"] || 0;
console.log(ketqua);

→  [“1”, “2”];

Ở đây, biểu thức cũng sẽ không bao giờ kiểm tra đến 0, mà nó trả về ngay mảng là giá trị khác 0 khi nó gặp đầu tiên.

Hoặc:

var ketqua = {ten: "An", tuoi: "7"} || "";
console.log(ketqua);

→  {ten: "A", tuoi: "7"};

Ở đây, biểu thức cũng không bao giờ kiểm tra đến chuỗi rỗng, mà nó trả về ngay đối tượng khác rỗng đầu tiên mà nó gặp.

Khi tất cả các giá trị bên trong là hợp lệ, toán tử || sẽ trả về giá trị hợp lệ đầu tiên mà nó bắt gặp.

var ketqua = "An" || "Minh";
console.log(ketqua);

→  "An";

var ketqua = "Minh"|| "An";
console.log(ketqua);

→  “Minh”;

Và khi tất cả các giá trị bên trong là không hợp lệ, toán tử || sẽ trả về giá trị không hợp lệ sau cùng mà nó bắt gặp.

var ketqua = "" || undefined;
console.log(ketqua);

→  undefined;

var ketqua = undefined || "";
console.log(ketqua);

→  “”;

 

Kết luận

Qua bài học này chúng ta đã cùn tìm hiểu và nắm vững kỹ thuật sử dụng các phép toán logic AND (&&) và OR(||). Ở bài kế tiếp chúng ta sẽ cùng tìm hiểu về câu lệnh switch.

 

Khóa học liên quan

** Nếu bạn muốn viết các nội dung đặt biệt thì hãy làm theo hướng dẫn sau

Xem thêm 10 bình luận
Viết blog mới của bạn
Báo lỗi trang
Đang tải