Toán tử OR (hoặc ||
) logic trong JavaScript là một toán tử trả về phía bên trái nếu phía bên trái là trung thực , nhưng nếu không thì mặc định và trả về phía bên phải.
Điều này có nghĩa là nó có thể được sử dụng để kiểm tra cả hai câu lệnh logic và cũng để trả về toán hạng bên phải nếu câu lệnh bên trái là falsy
.
Chúng ta hãy xem nó hoạt động như thế nào.
Trước khi chúng ta tiếp tục, trước tiên chúng ta hãy hiểu falsy
có nghĩa là gì. Nó có vẻ giống như một tuyên bố mơ hồ, nhưng nó thực sự có một định nghĩa rất cụ thể. Các giá trị sau là falsy
trong JavaScript:
false
0
hoặc -0
hoặc 0n
any
chuỗi trống nào, tức là ""
null
undefined
NaN
Tương tự, truthy
đơn giản có nghĩa là bất cứ điều gì không phải là giả falsy
.
Vì falsy
có thể có nghĩa là 0
và ""
, đôi khi nó có thể là một lựa chọn tồi để đặt các giá trị mặc định.
Ví dụ: trong một số trường hợp, nếu giá trị của bạn thực sự là 0
và bạn muốn hiển thị nó, bạn sẽ không thể thực hiện với ||
nhà điều hành. Đối với những trường hợp này, tốt hơn nên xem xét toán tử kết hợp nullish.
Như đã đề cập, ||
toán tử có hai chức năng chính trong JavaScript. Thông thường nhất, nó được tìm thấy trong các câu lệnh if..else
logic, trong đó nó trả về true nếu một hoặc nhiều toán hạng của nó là truthy
, nhưng nó cũng được sử dụng để trả về giá trị đầu tiên nếu nó truthy
hoặc mặc định ở phía bên phải toán hạng nếu không.
Cái ||
hoạt động theo cả hai cách này vì nó thực sự trả về một giá trị.
Có thể bạn sẽ thấy ||
được sử dụng phổ biến nhất trong các câu lệnh logic như if
và else
. Trong những trường hợp này, chúng tôi thường kiểm tra một câu lệnh logic, vì vậy ||
sẽ trả về true
nếu một hoặc nhiều toán hạng của nó là truthy
.
Những gì đang xảy ra dưới đây là ||
toán tử trả về một giá trị, sau đó câu lệnh if
sẽ chuyển đổi thành true
hoặc false
let x = 100; // This returns true, since both of these statements are correct. if(x > 5 || x > 10) { // ... } // Since both "1" and "2" can be converted to true, this also returns true in this context. if("1" || "2") { // ... } // Since both "" and null are falsy, they are converted to false, and as such this returns false. if("" || null) { // ... }
Đây là một trong những cách chính bạn sẽ sử dụng ||
trong mã của bạn, nhưng nó cũng thường được sử dụng để trả về các giá trị dựa trên mức độ trung thực hay falsy
truthy
chúng.
Bây giờ chúng ta hãy xem xét một ví dụ khác, bên ngoài các câu lệnh logic. Như đã đề cập, ||
trả về phía bên trái của nó nếu nó là sự truthy
, nhưng nếu không thì trả về phía bên phải của nó.
Điều đó nghe có vẻ hơi khó hiểu, vì vậy chúng ta hãy xem xét một vài ví dụ.
// Is set to 1, since the first operand is falsy let x = false || 1; // Is set to hello, since "hello" is truthy let y = "hello" || true;
Trong ví dụ trên, vì x
có vế trái được đặt thành false
, nên x
trở thành 1. Tương tự, trong y
vì "hello"
không phải là falsy
nên giá trị của y
là "hello"
. Chức năng này khác với ứng dụng của nó trong các câu lệnh logic và câu lệnh if..else
, nhưng có thể hữu ích trong nhiều trường hợp.
Điều thú vị là ngay cả khi mục cuối cùng được đưa ra là falsy
, JavaScript vẫn sẽ trả lại nó.
Ví dụ:
// Is set to null since false is falsy let x = false || null; // Is set to false since 0 is falsy let y = 0 || false;
Có thể xâu chuỗi các ||
toán tử trong JavaScript. Khi xâu chuỗi các câu lệnh logic (trong mệnh đề if..else
), câu lệnh sẽ trả về true nếu bất kỳ mục nào trong chuỗi là truthy
:
// This works since both "1" and true are truthy if("1" || true || false) { // ... console.log('this works') } // This doesn't work since all values are falsy if(false || null || undefined) { console.log('this does not work'); }
Khi chúng ta sử dụng ||
được xâu chuỗi bên ngoài các câu lệnh logic, nó sẽ sử dụng giá trị truthy
đầu tiên được tìm thấy hoặc mặc định là giá trị cuối cùng. Ví dụ: bên dưới, x
bằng 3
, y
true
và z
là {}
. Nếu bạn đang thắc mắc tại sao z
lại là {}
, thì đó là bởi vì bất cứ thứ gì không giả falsy
, đều là truthy
, có nghĩa là một đối tượng là truthy
!
// x is set to 3 let x = false || 0 || 3; // y is set to true let y = false || true || 3; // z is set to {} let z = {} || [] || x;
Cái ||
toán tử thường được sử dụng trong các câu lệnh lôgic, cũng như mặc định thành các giá trị không falsy
nếu tìm thấy một giá trị. Đó là một toán tử linh hoạt, cốt lõi để hiểu JavaScript. Nếu bạn quan tâm đến một toán tử khác, tương tự, bạn cũng có thể muốn đọc về toán tử liên kết nullish .