0 và 1 là loại 'số' nhưng trong biểu thức Boolean, 0 chuyển thành
console.log[0 || false]; // output: false
1 và 1 chuyển thành console.log[0 || false]; // output: false
2. Vì một biểu thức Boolean chỉ có thể mang lại một giá trị Boolean, nên bất kỳ biểu thức nào không rõ ràng là console.log[0 || false]; // output: false
2 hoặc console.log[0 || false]; // output: false
1 đều được đánh giá theo mức độ trung thực và sai lệchSố không là số duy nhất đánh giá là sai. Tất cả các số khác 0 khác, bất kể hình thức hoặc biểu thức đánh giá là trung thực
console.log[42 || false]; // output: 42
Điều này cho chúng ta biết rằng 42 là trung thực, nếu không biểu thức sẽ mang lại,
console.log[0 || false]; // output: false
1. Biểu thức OR ngắn mạch trên toán hạng true/true đầu tiênconsole.log[0 || false]; // output: false
Vì 0 là sai nên toán hạng thứ hai được trả về. Điều này sẽ xuất hiện trong chủ đề toán tử logic, vì vậy hãy lập bảng ngay bây giờ mà không tốn quá nhiều năng lượng cho những gì tôi đã viết ở đây. Miễn là bạn có được ý tưởng chung, chúng ta sẽ ổn thôi
Đối với phần thứ hai của câu hỏi của bạn,
if [youHit === true]
sẽ không bao giờ mang lại
console.log[0 || false]; // output: false
2, vì toán tử so sánh kiểu dữ liệu nghiêm ngặt console.log[0 || false]; // output: false
1. Một hình thức so sánh lỏng lẻo [chuyển đổi loại] sẽ mang lại console.log[0 || false]; // output: false
2 nếu console.log[0 || false]; // output: false
3 khác khôngif [youHit == true]
Tuy nhiên, như chúng ta đã thấy trước đó, chúng ta không cần phải so sánh đúng hay sai, trừ khi chúng ta hoàn toàn nhấn mạnh vào cái này hay cái kia.
youHit = true;
if [youHit]{
// will be true, whether explicitly the primitive, or any truthy expression.
}
if [youHit === true]{
// will be true, but only if explicitly the primitive, nothing else.
}
Hy vọng rằng điều này không làm bạn bối rối nhiều hơn nó giúp ích. Theo dõi một số bài đọc về true và false trong chuyển đổi kiểu JavaScript và cách nó áp dụng cho các biểu thức logic và điều kiện
Trong JavaScript, một giá trị là true nếu kiểu ép buộc tích hợp của JavaScript chuyển đổi nó thành
console.log[0 || false]; // output: false
2. Mọi giá trị đều là trung thực hoặc sai, vì vậy bất kỳ giá trị nào không phải là giả phải là trung thựcChân lý và giả dối thường xuất hiện trong ngữ cảnh của các câu nói
console.log[0 || false]; // output: false
9. Ví dụ: câu lệnh console.log[0 || false]; // output: false
9 dưới đây sẽ in ra khi và chỉ khi if [youHit == true]
1 là đúngif [v] {
console.log['v is truthy!'];
}
Hãy nhớ rằng chỉ có 7 giá trị trong JavaScript là sai
1console.log[0 || false]; // output: false
3if [youHit == true]
4. 0 với tư cách là một BigIntif [youHit == true]
5. chuỗi rỗngif [youHit == true]
6if [youHit == true]
20console.log[0 || false]; // output: false
21console.log[0 || false]; // output: false
Mọi giá trị khác đều là sự thật. Ví dụ, ngay cả một đối tượng
console.log[0 || false]; // output: false
22 chứa console.log[0 || false]; // output: false
1 là đúng sự thậtVới toán tử logic NOT
Toán tử logic NOT trong JavaScript chuyển đổi giá trị thật thành
console.log[0 || false]; // output: false
1 và giá trị giả thành console.log[0 || false]; // output: false
2. Nói cách khác, toán tử logic console.log[0 || false]; // output: false
26 cho phép bạn lưu trữ giá trị mà phép cưỡng chế boolean tích hợp sẵn của JavaScript chuyển đổi if [youHit == true]
1 thànhBạn có thể thấy toán tử logic NOT hai lần liên tiếp.
console.log[0 || false]; // output: false
28. Đây là cách bạn chuyển đổi một giá trị thành boolean bằng cách sử dụng tính năng cưỡng chế tích hợp sẵn của JavaScript Toán tử logic OR [
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
0] [phân tách logic] cho một tập hợp toán hạng là đúng khi và chỉ khi một hoặc nhiều toán hạng của nó là đúng. Nó thường được sử dụng với các giá trị boolean [logic]. Khi có, nó trả về giá trị Boolean. Tuy nhiên, toán tử function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
0 thực sự trả về giá trị của một trong các toán hạng đã chỉ định, vì vậy nếu toán tử này được sử dụng với các giá trị không phải Boolean, nó sẽ trả về giá trị không phải BooleanThử nó
cú pháp
console.log[0 || false]; // output: false
0Sự miêu tả
Nếu có thể chuyển đổi
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
2 thành function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
3, trả về function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
2; Nếu một giá trị có thể được chuyển đổi thành
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
3, thì giá trị đó được gọi là trung thực. Nếu một giá trị có thể được chuyển đổi thành function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
7, thì giá trị đó được gọi là giảVí dụ về các biểu thức có thể được chuyển đổi thành false là
8;function A[] { console.log['called A']; return false; } function B[] { console.log['called B']; return true; } console.log[B[] || A[]]; // Logs "called B" due to the function call, // then logs true [which is the resulting value of the operator]
9;function A[] { console.log['called A']; return false; } function B[] { console.log['called B']; return true; } console.log[B[] || A[]]; // Logs "called B" due to the function call, // then logs true [which is the resulting value of the operator]
90;console.log[0 || false]; // output: false
- chuỗi rỗng [
91 hoặcconsole.log[0 || false]; // output: false
92 hoặcconsole.log[0 || false]; // output: false
93];console.log[0 || false]; // output: false
94console.log[0 || false]; // output: false
Mặc dù toán tử
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
0 có thể được sử dụng với các toán hạng không phải là giá trị Boolean, nhưng nó vẫn có thể đượ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 nguyên hàm boolean. Để chuyển đổi rõ ràng giá trị trả về của nó [hoặc bất kỳ biểu thức nào nói chung] thành giá trị boolean tương ứng, hãy sử dụng toán tử NOT kép hoặc hàm tạo console.log[0 || false]; // output: false
96Đánh giá ngắn mạch
Biểu thức logic OR được đánh giá từ trái sang phải, nó được kiểm tra để đánh giá "ngắn mạch" có thể xảy ra bằng cách sử dụng quy tắc sau
console.log[0 || false]; // output: false
97 được đánh giá ngắn mạch theo biểu thức trung thựcĐoản mạch có nghĩa là phần
console.log[0 || false]; // output: false
98 ở trên không được đánh giá, do đó bất kỳ tác dụng phụ nào của việc làm như vậy đều không có hiệu lực [e. g. , nếu console.log[0 || false]; // output: false
98 là một lời gọi hàm, thì lời gọi đó sẽ không bao giờ diễn ra]. Điều này xảy ra vì giá trị của toán tử đã được xác định sau khi đánh giá toán hạng đầu tiên. Xem ví dụ________số 8
Ưu tiên điều hành
Các biểu thức sau đây có vẻ tương đương, nhưng không phải vậy, bởi vì toán tử
console.log[0 || false]; // output: false
00 được thực thi trước toán tử function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
0 [xem thứ tự ưu tiên của toán tử]console.log[0 || false]; // output: false
9ví dụ
Sử dụng HOẶC
Đoạn mã sau hiển thị các ví dụ về toán tử
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
0 [logic OR]console.log[0 || false]; // output: false
0Ghi chú. Nếu bạn sử dụng toán tử này để cung cấp giá trị mặc định cho một số biến, hãy lưu ý rằng mọi giá trị giả sẽ không được sử dụng. Nếu bạn chỉ cần lọc ra
function A[] {
console.log['called A'];
return false;
}
function B[] {
console.log['called B'];
return true;
}
console.log[B[] || A[]];
// Logs "called B" due to the function call,
// then logs true [which is the resulting value of the operator]
8 hoặc console.log[0 || false]; // output: false
94, hãy cân nhắc sử dụng toán tử kết hợp nullishQuy tắc chuyển đổi cho boolean
Chuyển AND thành OR
Hoạt động sau đây liên quan đến booleans
console.log[0 || false]; // output: false
7luôn luôn bằng
console.log[0 || false]; // output: false
8Chuyển đổi HOẶC thành AND
Hoạt động sau đây liên quan đến booleans
console.log[0 || false]; // output: false
9luôn luôn bằng
console.log[0 || false]; // output: false
0Xóa 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ể xóa dấu ngoặc đơn khỏi biểu thức phức tạp theo một số quy tắc