Logical AND (&&)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Toán tử logical AND (&&) (phép hội logic) cho một tập hợp các toán hạng boolean sẽ là true khi và chỉ khi tất cả các toán hạng đều là true. Nếu không, nó sẽ là false.
Nói chung hơn, toán tử trả về giá trị của toán hạng falsy đầu tiên gặp phải khi đánh giá từ trái sang phải, hoặc giá trị của toán hạng cuối cùng nếu tất cả đều truthy.
Try it
const a = 3;
const b = -2;
console.log(a > 0 && b > 0);
// Expected output: false
Cú pháp
x && y
Mô tả
Logical AND (&&) đánh giá các toán hạng từ trái sang phải, trả về ngay giá trị của toán hạng falsy đầu tiên nó gặp; nếu tất cả các giá trị đều truthy, giá trị của toán hạng cuối cùng được trả về.
Nếu một giá trị có thể được chuyển đổi thành true, giá trị đó được gọi là truthy. Nếu một giá trị có thể được chuyển đổi thành false, giá trị đó được gọi là falsy.
Ví dụ về các biểu thức có thể được chuyển đổi thành false là:
false;null;NaN;0;- chuỗi rỗng (
""hoặc''hoặc``); undefined.
Toán tử AND bảo tồn các giá trị không phải Boolean và trả về chúng như chúng vốn có:
result = "" && "foo"; // result is assigned "" (empty string)
result = 2 && 0; // result is assigned 0
result = "foo" && 4; // result is assigned 4
Mặc dù toán tử && có thể được sử dụng với các toán hạng không phải Boolean, nó vẫn được coi là toán tử boolean vì giá trị trả về của nó luôn có thể được chuyển đổi thành boolean primitive. Để chuyển đổi tường minh giá trị trả về của nó (hoặc bất kỳ biểu thức nào nói chung) sang giá trị boolean tương ứng, hãy sử dụng toán tử NOT kép hoặc constructor Boolean.
Đánh giá short-circuit
Biểu thức logical AND là toán tử short-circuit. Khi mỗi toán hạng được chuyển đổi thành boolean, nếu kết quả của một lần chuyển đổi được tìm thấy là false, toán tử AND dừng lại và trả về giá trị gốc của toán hạng falsy đó; nó không đánh giá bất kỳ toán hạng còn lại nào.
Hãy xem xét pseudocode dưới đây.
(some falsy expression) && expr
Phần expr không bao giờ được đánh giá vì toán hạng đầu tiên (some falsy expression) được đánh giá là falsy. Nếu expr là một hàm, hàm đó không bao giờ được gọi. Xem ví dụ bên dưới:
function A() {
console.log("called A");
return false;
}
function B() {
console.log("called B");
return true;
}
console.log(A() && B());
// Logs "called A" to the console due to the call for function A,
// && evaluates to false (function A returns false), then false is logged to the console;
// the AND operator short-circuits here and ignores function B
Độ ưu tiên toán tử
Toán tử AND có độ ưu tiên cao hơn toán tử OR, nghĩa là toán tử && được thực thi trước toán tử || (xem độ ưu tiên toán tử).
true || false && false; // true
true && (false || false); // false
(2 === 3) || (4 < 0) && (1 === 1); // false
Ví dụ
>Sử dụng AND
Đoạn code sau đây hiển thị các ví dụ về toán tử && (logical AND).
a1 = true && true; // t && t returns true
a2 = true && false; // t && f returns false
a3 = false && true; // f && t returns false
a4 = false && 3 === 4; // f && f returns false
a5 = "Cat" && "Dog"; // t && t returns "Dog"
a6 = false && "Cat"; // f && t returns false
a7 = "Cat" && false; // t && f returns false
a8 = "" && false; // f && f returns ""
a9 = false && ""; // f && f returns false
Quy tắc chuyển đổi cho boolean
Chuyển đổi AND sang OR
Phép toán sau liên quan đến boolean:
bCondition1 && bCondition2
luôn bằng:
!(!bCondition1 || !bCondition2)
Chuyển đổi OR sang AND
Phép toán sau liên quan đến boolean:
bCondition1 || bCondition2
luôn bằng:
!(!bCondition1 && !bCondition2)
Loại bỏ dấu ngoặc lồng nhau
Vì các biểu thức logic được đánh giá từ trái sang phải, luôn có thể loại bỏ dấu ngoặc khỏi một biểu thức phức tạp miễn là tuân theo một số quy tắc nhất định.
Phép toán tổng hợp sau liên quan đến boolean:
bCondition1 || (bCondition2 && bCondition3)
luôn bằng:
bCondition1 || bCondition2 && bCondition3
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # prod-LogicalANDExpression> |