Có đúng == đúng trong JavaScript không?

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ệch

Số 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ên

console.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ông

if [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ực

Châ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à đúng

if [v] {
  console.log['v is truthy!'];
}

Hãy nhớ rằng chỉ có 7 giá trị trong JavaScript là sai

  • console.log[0 || false]; // output: false
    1
  • if [youHit == true]
    3
  • if [youHit == true]
    4. 0 với tư cách là một BigInt
  • if [youHit == true]
    5. chuỗi rỗng
  • if [youHit == true]
    6
  • console.log[0 || false]; // output: false
    20
  • console.log[0 || false]; // output: false
    21

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ật

Vớ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ành

Bạ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 Boolean

Thử nó

cú pháp

console.log[0 || false]; // output: false
0

Sự 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à

  • 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;
  • 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;
  • console.log[0 || false]; // output: false
    90;
  • chuỗi rỗng [
    console.log[0 || false]; // output: false
    91 hoặc
    console.log[0 || false]; // output: false
    92 hoặc
    console.log[0 || false]; // output: false
    93];
  • console.log[0 || false]; // output: false
    94

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
9

ví 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
0

Ghi 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 nullish

Quy 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
7

luôn luôn bằng

console.log[0 || false]; // output: false
8

Chuyển đổi HOẶC thành AND

Hoạt động sau đây liên quan đến booleans

console.log[0 || false]; // output: false
9

luôn luôn bằng

console.log[0 || false]; // output: false
0

Xó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

Tại sao true == [] false trong JavaScript?

Giá trị. [] là sai , vì [] là một Đối tượng [mảng là đối tượng] và tất cả các đối tượng, không bao gồm null , là trung thực . Vì vậy, bất kỳ mảng nào, ngay cả khi nó trống sẽ luôn là một giá trị trung thực và ngược lại với một giá trị trung thực luôn là sai.

True và True có giống nhau trong JavaScript không?

Có. Chúng ta có thể chuyển đổi toán hạng kia thành một chuỗi không? Yes [ String[true] === "true" // true ]

Kết quả của True == 1 trong JavaScript là gì?

0 và 1 là loại 'số' nhưng trong biểu thức Boolean, 0 chuyển thành false và 1 chuyển thành true . Vì một biểu thức Boolean chỉ có thể mang lại một Boolean, nên bất kỳ biểu thức nào không rõ ràng là đúng hoặc sai đều được đánh giá theo mức độ đúng và sai. Số không là số duy nhất đánh giá là sai.

Điều gì là đúng sự thật trong JS?

Trong JavaScript, giá trị trung thực là giá trị được coi là đúng khi gặp phải trong ngữ cảnh Boolean . Tất cả các giá trị là trung thực trừ khi chúng được định nghĩa là giả. Nghĩa là, tất cả các giá trị đều trung thực ngoại trừ false , 0 , -0 , 0n , "" , null , undefined và NaN.

Chủ Đề