So sánh giá trị với kiểu boolean trong JavaScript

Trong ví dụ trước, chúng ta đã sử dụng toán tử === để so sánh. Trong trường hợp này, biến của chúng ta được so sánh để xem có bằng true hay không về cả giá trị và kiểu dữ liệu.

Đối với phép so sánh như vậy, chúng ta cũng có thể sử dụng toán tử ==. Nếu trong biến test luôn là một trong các giá trị true hoặc false, thì sẽ không có gì thay đổi:

javascriptlet test = true; // Ở đây chúng ta viết true hoặc false

if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}

Nhưng nếu biến test có thể nhận bất kỳ giá trị nào, thì mọi thứ trở nên phức tạp hơn nhiều.

Trong trường hợp đó, nếu trong biến test không phải là giá trị boolean, thì giá trị đó trước tiên sẽ được chuyển đổi sang boolean và chỉ sau đó mới được so sánh.

Ví dụ, giả sử trong biến test là số 1. Trong trường hợp này, nó sẽ được chuyển đổi sang kiểu logic trước, tức là thành true. Và sau đó phép so sánh sẽ được thực hiện:

javascriptlet test = 1;

if (test == true) {
  console.log('+++'); // Đoạn này sẽ chạy
} else {
  console.log('---');
}

Nhưng ví dụ, số 0 sẽ được chuyển đổi thành false. Và điều kiện của chúng ta cuối cùng sẽ in ra 'không đúng':

javascriptlet test = 0;

if (test == true) {
  console.log('+++');
} else {
  console.log('---'); // Đoạn này sẽ chạy
}

Trên thực tế, phép so sánh như vậy có thể được viết lại rõ ràng dưới dạng sau:

javascriptlet test = 1;

if (Boolean(test) == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Hãy nhớ lại và viết ra, những giá trị nào khi chuyển đổi sang kiểu logic sẽ cho ra false.

Задание 2

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = 1;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 3

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = 0;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 4

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = 1;
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 5

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = 1;
    
if (test != true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 6

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = '';
    
if (test == false) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 7

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test;
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 8

Không chạy code, hãy xác định xem cái gì sẽ được in ra console:

javascriptlet test = 3 * 'a';
    
if (test == true) {
  console.log('+++');
} else {
  console.log('---');
}