Tùy chọn nào là toán tử so sánh JavaScript?

Khi chúng tôi muốn so sánh hai giá trị trong JavaScript, chúng tôi sử dụng các toán tử so sánh do JavaScript cung cấp. Sau khi so sánh được thực hiện, Toán tử so sánh trả về một giá trị boolean đúng hoặc sai dựa trên so sánh. Ví dụ: nếu chúng ta muốn xem giá trị nào lớn hơn trong khoảng từ 55 đến 45, chúng ta có thể sử dụng toán tử so sánh lớn hơn (>) như thế này (55 > 45). Điều này sẽ trả về true vì 55 lớn hơn 45. Trong bài viết này, chúng ta sẽ xem tám toán tử so sánh như vậy trong JavaScript và thảo luận chi tiết về hành vi của chúng với các toán hạng thuộc các loại dữ liệu khác nhau

Phạm vi

  • Trong bài viết này, chúng tôi sẽ thảo luận rộng rãi về các toán tử so sánh trong javascript
  • We will learn about various types of comparison operators like >, <, >=, <=, ==, !=, etc.
  • Chúng ta sẽ tìm hiểu cách Toán tử so sánh trong Javascript hoạt động trên các loại dữ liệu khác nhau và cũng sẽ tìm hiểu sự khác biệt giữa toán tử bằng (==) và Toán tử bằng nghiêm ngặt (===) trong JavaScript

Giới thiệu về Toán tử so sánh trong JavaScript

Trong khi viết các chương trình khác nhau, đôi khi chúng ta gặp phải các tình huống cần so sánh hai giá trị và sau đó chúng ta có thể tiếp tục. Ví dụ: bạn chỉ có thể lấy bằng lái xe nếu tuổi của bạn lớn hơn hoặc bằng 18 tuổi. Điều này có thể được thể hiện trong lập trình bằng cách sử dụng toán tử so sánh (>=) này. Tham khảo mã được đưa ra dưới đây

let age = 19;
if(age >= 18){
    console.log("You can get the driving licence");
}else {
    console.log("Sorry, you are too young to get a driving licence")
}

Trong ví dụ trên, chúng ta đã gán giá trị 19 cho biến 'tuổi' và sử dụng toán tử so sánh lớn hơn hoặc bằng (>=) để so sánh trong câu lệnh điều kiện if-else. Do đó, "Bạn có thể lấy giấy phép lái xe" được trả về trong bảng điều khiển khi (tuổi >= 18) trả về true. Đây là cách mà Toán tử so sánh trong Javascript có thể được áp dụng trong lập trình

Như tên gợi ý, Toán tử so sánh được sử dụng để so sánh hai toán hạng (đơn giản là giá trị). Một giá trị boolean (đúng hoặc sai) được trả về dựa trên việc so sánh hai giá trị và các hành động hoặc quyết định khác nhau được thực hiện dựa trên giá trị boolean được trả về đó. Có tám toán tử so sánh trong Javascript. Tham khảo bảng dưới đây

Toán tử so sánh JavaScript Ý nghĩa theo nghĩa đen Trường hợp sử dụng>lớn hơnNó trả về true nếu toán hạng bên trái của nó lớn hơn toán hạng bên phải của nó

ví dụ

Chúng ta đã khai báo biến và sử dụng toán tử so sánh có hai toán hạng (ở đây là số) trong các biến đó. Lưu ý rằng giá trị sẽ được lưu trữ trong các biến này sau khi so sánh là giá trị boolean (đúng hoặc sai) như chúng ta đã sử dụng các toán tử so sánh. Trong các ví dụ dưới đây, toán hạng bên trái của toán tử so sánh được gọi là toán hạng thứ nhất và toán hạng bên phải được gọi là toán hạng thứ hai

ví dụ 1

let val_1 = 40 > 54; 
console.log(val_1) // returns false

Trong val_1, toán tử lớn hơn (>) được sử dụng. Nó trả về true nếu toán hạng thứ nhất lớn hơn toán hạng thứ hai và trả về false nếu ngược lại. Do đó đối với (40 > 54), ta sai vì 40 không lớn hơn 54

ví dụ 2

let val_2 = 40 < 54; 
console.log(val_2); // returns true

Trong val_2, toán tử nhỏ hơn (<) được sử dụng. Nó trả về true nếu toán hạng thứ nhất nhỏ hơn toán hạng thứ hai và trả về false nếu ngược lại. Do đó với (40 < 54), ta nhận đúng vì 40 nhỏ hơn 54

ví dụ 3

let val_3 = 15 >= 20; 
console.log(val_3); // returns false

Trong val_3, toán tử lớn hơn hoặc bằng (>=) được sử dụng. Nó trả về true nếu toán hạng thứ nhất lớn hơn hoặc bằng toán hạng thứ hai và trả về false nếu ngược lại. Do đó, với (15 >= 20), ta nhận sai vì 15 không lớn hơn hoặc bằng 20

Ví dụ 4

let val_4 = 15 <= 20; 
console.log(val_4); // returns true

Trong val_4, nhỏ hơn hoặc bằng toán tử (<=) được sử dụng. Nó trả về true nếu toán hạng đầu tiên nhỏ hơn hoặc bằng toán hạng thứ hai và sai nếu ngược lại. Do đó, ta nhận đúng với (15 <= 20) vì 15 nhỏ hơn 20. Ngay cả khi chúng ta thay thế 15 bằng 20, chúng ta vẫn nhận được giá trị true vì dấu bằng cũng có trong toán tử (<=) này

Ví dụ 5

let val_5 = 7 == '7'; // returns true
console.log(val_5);

Trong val_5, toán tử bằng (==) được sử dụng. Nó chuyển đổi cả hai toán hạng thành kiểu dữ liệu chung hoặc cùng loại và trả về true nếu cả hai toán hạng đều có giá trị bằng nhau. Do đó, với (7 == '7') ta có giá trị đúng

Ví dụ 6

let val_6 = 7 === '7'; // returns false
console.log(val_6);

Trong val_6, toán tử nghiêm ngặt bằng (===) được sử dụng. Nó không chuyển đổi các toán hạng thành kiểu dữ liệu chung trước khi so sánh chúng và trả về true nếu cả hai toán hạng bằng nhau về giá trị cũng như giống nhau về kiểu dữ liệu. Do đó, đối với (7 === '7'), chúng ta nhận sai vì cả hai toán hạng đều có giá trị bằng nhau nhưng khác nhau về kiểu dữ liệu vì toán hạng đầu tiên 7 thuộc kiểu dữ liệu số và toán hạng thứ hai '7' thuộc kiểu dữ liệu chuỗi

Ví dụ 7

let val_7 = 7 != '7'; // returns false
console.log(val_7);

Trong val_7, không bằng (. toán tử =) được sử dụng. Nó chuyển đổi cả hai toán hạng thành kiểu dữ liệu chung và trả về true nếu cả hai toán hạng không bằng nhau về giá trị. Do đó, đối với (7. = '7') chúng ta sai

Ví dụ 8

________số 8

Trong val_8, nghiêm ngặt không bằng (. toán tử ==) được sử dụng. Nó không chuyển đổi toán hạng thành kiểu dữ liệu chung hoặc cùng loại trước khi so sánh chúng và trả về true nếu cả hai toán hạng không bằng nhau về giá trị. Do đó, đối với (7. == '7'), ta nhận được true vì cả hai toán hạng đều có giá trị bằng nhau nhưng khác nhau về kiểu dữ liệu vì toán hạng đầu tiên 7 thuộc kiểu dữ liệu số và toán hạng thứ hai '7' thuộc kiểu dữ liệu chuỗi

So Sánh Số

Trong khi so sánh các toán hạng là số, so sánh số được thực hiện bởi JavaScript trong đó cả hai toán hạng số sẽ được so sánh với nhau. Trong ví dụ dưới đây, a được so sánh với b

let a = 5;
let b = 10; 
console.log(a > b);  // false 
console.log(a < b); // true

So sánh chuỗi

Việc so sánh hoàn toàn khác trong trường hợp chuỗi. Chuỗi ký tự có mã ký tự được so sánh từng ký tự một khi so sánh giữa hai chuỗi. Hãy để chúng tôi hiểu điều này bằng một ví dụ-

let val_1 = 40 > 54; 
console.log(val_1) // returns false
0

Giải trình

Ở đầu ra đầu tiên, bạn có thể thấy rằng biến 'str_compared' trả về true. Nhưng bằng cách nào? . Chúng tôi thấy việc so sánh các chuỗi, nhưng thực ra, các mã ký tự được so sánh đằng sau hậu trường. Chúng ta có thể lấy mã ký tự của ký tự đầu tiên của cả hai chuỗi bằng cách sử dụng phương thức charCodeAt(index), như bạn có thể thấy trong ví dụ trên. Là mã ký tự của biến 'str_2' tôi. e. 66 nhỏ hơn biến 'str_1' i. e. 71, str_compared (str_2 < str_1) được trả về true

Ví dụ, có thể có một số trường hợp bạn sẽ nhận được kết quả không mong muốn -

let val_1 = 40 > 54; 
console.log(val_1) // returns false
1

Giải trình

Đoạn mã trên cho thấy đầu ra của biến 'str_compared' hiện là sai. Nhưng tại sao? . Để giải quyết vấn đề này, trước tiên chúng ta phải chuyển đổi cả hai chuỗi thành một trường hợp tương tự, hoặc là chữ hoa hoặc chữ thường, để so sánh mã ký tự chính xác. Điều này sẽ dẫn đến đầu ra chính xác. Xem mã được đưa ra dưới đây

let val_1 = 40 > 54; 
console.log(val_1) // returns false
2

So sánh một số với một giá trị của loại khác

Khi so sánh các số với các toán hạng kiểu dữ liệu khác không phải là số như chuỗi, JavaScript sẽ chuyển đổi các toán hạng không phải là số thành một toán hạng số rồi so sánh chúng

let val_1 = 40 > 54; 
console.log(val_1) // returns false
3

Trong ví dụ đầu tiên ở trên, 5 là giá trị số trong khi '4' là giá trị chuỗi. JavaScript chuyển đổi chuỗi '4' thành số 4 và sau đó so sánh chúng. Do đó, chúng ta nhận được giá trị đúng khi 5 lớn hơn 4. Ví dụ thứ hai cũng tương tự

So sánh đối tượng trong JavaScript

Trong JavaScript, các Đối tượng được sử dụng để lưu trữ các giá trị dưới dạng khóa. cặp giá trị, tôi. e. khóa (tên của biến) và giá trị được phân tách bằng dấu hai chấm. Các đối tượng có thể có các thuộc tính (các cặp khóa và giá trị) và các phương thức (một thuộc tính đối tượng có định nghĩa hàm là một giá trị)

So sánh một đối tượng với một đối tượng không

Để so sánh một đối tượng với một đối tượng không phải đối tượng, JavaScript cần một giá trị từ đối tượng được so sánh. Do đó để lấy giá trị này từ đối tượng đó, JavaScript gọi phương thức valueOf(). valueOf() như tên gợi ý trả về giá trị. Trong trường hợp nếu phương thức valueOf() không có trong đối tượng đó, JavaScript sẽ gọi phương thức toString(). Phương thức toString() trả về một giá trị mà JavaScript sử dụng để so sánh một đối tượng với một đối tượng không phải đối tượng. Lưu ý rằng tất cả quá trình này được thực hiện nội bộ bởi JavaScript. Tham khảo ví dụ dưới đây

Mã số

let val_1 = 40 > 54; 
console.log(val_1) // returns false
4

đầu ra

let val_1 = 40 > 54; 
console.log(val_1) // returns false
5

Giải trình

Trong kết quả đầu tiên ở trên, bạn có thể thấy rõ ràng rằng khi đối tượng đầu tiên "sổ tay" được so sánh với 60, giá trị true được trả về khi phương thức valueOf() trong đối tượng "sổ tay" đã trả về giá trị 60 bằng với đối tượng khác.

Trong kết quả thứ 2 ở trên, vì phương thức valueOf() không có trong đối tượng "truyện tranh", nên phương thức toString() đã trả về giá trị là 30. Giá trị trả về này sau đó được sử dụng để so sánh với một toán hạng khác 20. Do đó, false được trả về sau khi so sánh vì 30 không nhỏ hơn 20

So sánh một đối tượng với một đối tượng khác

Mã số

let val_1 = 40 > 54; 
console.log(val_1) // returns false
6

đầu ra

Trong kết quả ở trên, một đối tượng 'sổ tay' được so sánh với một đối tượng 'truyện tranh' khác. Đó là một so sánh trực tiếp giữa hai đối tượng. Đối tượng 'sách vở' đã trả về 60, giá trị này không bằng giá trị mà đối tượng 'truyện tranh' đã trả về i. e. 30. Do đó, false được trả về trong bảng điều khiển

So sánh một Boolean với một giá trị khác

Trong khi so sánh một boolean với một giá trị kiểu dữ liệu khác trong JavaScript, giá trị boolean đầu tiên được chuyển đổi thành một số. Sau đó, nó được so sánh như chúng ta biết rằng boolean trong JavaScript có hai giá trị là true và false. Từ hai giá trị này, chỉ có một giá trị được trả về tại thời điểm so sánh, i. e. đúng hoặc sai. Do đó JavaScript chuyển đổi đúng thành một(1) và sai thành không (0). Tham khảo các ví dụ dưới đây

let val_1 = 40 > 54; 
console.log(val_1) // returns false
7

Giải trình

Như bạn có thể thấy, khi chúng tôi điều khiển. log so sánh boolean với một giá trị khác và chính giá trị boolean, true được coi là 1 và false được coi là 0. Kết quả là, chúng ta nhận được true với 'true > 0' vì '1 > 0' một lớn hơn 0. Các ví dụ khác cũng hoạt động theo cách tương tự

So sánh null và không xác định

vô giá trị. Nó là một giá trị gán có nghĩa là nó được gán đặc biệt cho một biến như một giá trị đại diện cho trạng thái rỗng của biến đó

chưa xác định. Nó không phải là một giá trị gán, có nghĩa là nó không được gán đặc biệt cho một biến. JavaScript trả về không xác định trên một trường hợp cụ thể. Ví dụ: không xác định được trả về khi một biến được khai báo nhưng không được gán bất kỳ giá trị nào. Tham khảo mã được đưa ra dưới đây

let val_1 = 40 > 54; 
console.log(val_1) // returns false
8

Trong ví dụ trên, bạn có thể thấy 'myVar' được khai báo nhưng không được gán bất kỳ giá trị nào; . log 'myVar', không xác định được trả về và khi chúng tôi kiểm tra loại myVar bằng toán tử typeOf, một lần nữa, không xác định được trả về

Nhưng null khác với không xác định. Null là giá trị gán được gán đặc biệt cho một biến dưới dạng giá trị biểu thị trạng thái rỗng của biến đó

let val_1 = 40 > 54; 
console.log(val_1) // returns false
9

Trong ví dụ trên, có thể thấy rằng chúng ta nhận được null khi điều khiển. đăng nhập biến 'myVar'. Nhưng chúng tôi nhận được Đối tượng khi chúng tôi kiểm tra loại biến 'myVar' bằng toán tử typeof trong JavaScript

Do đó, rõ ràng là null và undefined thuộc các kiểu khác nhau. null thuộc loại đối tượng và không xác định thuộc loại không xác định. Hãy để chúng tôi kiểm tra xem null có bằng không xác định hay không

let val_2 = 40 < 54; 
console.log(val_2); // returns true
0

Khi chúng tôi kiểm tra if (null == undefined), chúng tôi nhận được true trong bảng điều khiển, nhưng khi chúng tôi kiểm tra if (null === undefined), chúng tôi trả về false vì null bằng undefined nhưng không hoàn toàn. Như chúng ta đã thấy rằng null và undefined thuộc các kiểu khác nhau, chúng ta nhận được giá trị sai khi chúng được so sánh bằng cách sử dụng toán tử bằng nghiêm ngặt (===). Chúng ta sẽ thấy chi tiết sự khác biệt giữa các toán tử bằng nhau và nghiêm ngặt bằng nhau trong bài viết này

So sánh NaN với các giá trị khác

Trong JavaScript, NaN (Không phải là Số) là một giá trị số đặc biệt được sử dụng để xác minh một giá trị không phải là số. Nó trả về true khi giá trị được chỉ định không phải là một số và sai nếu ngược lại. Tham khảo ví dụ NaN được đưa ra dưới đây

let val_2 = 40 < 54; 
console.log(val_2); // returns true
1

Bất cứ khi nào chúng tôi so sánh NaN với bất kỳ toán hạng nào khác, chúng tôi nhận được sai. Tham khảo các ví dụ dưới đây

let val_2 = 40 < 54; 
console.log(val_2); // returns true
2

Trong các ví dụ trên, bạn có thể thấy rằng chúng tôi nhận được sai bất cứ khi nào NaN được so sánh với bất kỳ toán hạng nào khác. Quan sát trong biến_5 rằng false được trả về ngay cả khi NaN được so sánh với chính nó

Toán tử Strict Equal (=== ) là gì và không phải Strict Equal (. ==) Toán tử trong JavaScript?

Toán tử bằng nghiêm ngặt (=== ) và không nghiêm ngặt bằng (. ==), cả hai đều là Toán tử so sánh trong Javascript được sử dụng để so sánh hai toán hạng

Toán tử đẳng thức nghiêm ngặt (=== ) không chuyển đổi kiểu dữ liệu của các toán hạng trước khi so sánh chúng, nó so sánh đẳng thức của chúng trên cơ sở các giá trị của chúng giống như chúng. Toán tử này được sử dụng để kiểm tra nghiêm ngặt sự bằng nhau của các toán hạng. Do hành vi bình đẳng nghiêm ngặt như vậy, nó được gọi là toán tử bằng 'Nghiêm ngặt' (===). Toán tử này trả về true khi các toán hạng hoàn toàn bằng nhau và ngược lại là false

let val_2 = 40 < 54; 
console.log(val_2); // returns true
3

Trong ví dụ trên, biến 'myVar_1' trả về false trong bảng điều khiển vì 30 là một số, trong khi "30" là một chuỗi

Toán tử bằng không nghiêm ngặt (. == ) cũng không chuyển đổi kiểu dữ liệu của các toán hạng trước khi so sánh chúng; . Nói một cách đơn giản, nó chỉ là không hoặc phủ định của toán tử bằng nghiêm ngặt, được sử dụng để kiểm tra bất đẳng thức nghiêm ngặt. Do hành vi bất đẳng thức nghiêm ngặt như vậy của toán tử này, nó được gọi là toán tử bằng 'Không nghiêm ngặt' (. ==). Toán tử này trả về true khi các toán hạng không hoàn toàn bằng nhau và ngược lại là false

let val_2 = 40 < 54; 
console.log(val_2); // returns true
4

Trong ví dụ trên, biến 'myVar_2' trả về true trong bảng điều khiển vì 30 là một số, trong khi "30" là một chuỗi

Sự khác biệt giữa Toán tử bằng và Toán tử bằng nghiêm ngặt trong JavaScript

Toán tử bằng nhau (==)Toán tử bằng nhau nghiêm ngặt (===)Được sử dụng để so sánh sự bằng nhau giữa hai toán hạng một cách lỏng lẻoNó được sử dụng để so sánh sự bằng nhau giữa hai toán hạng một cách nghiêm ngặtNó chuyển đổi các toán hạng thành kiểu dữ liệu chung hoặc cùng loại trước khi so sánhNó . g. Vì không xác định và null gần như bằng nhau do đó không xác định == null trả về giá trị đúng, e. g. Vì không xác định và null hoàn toàn không bằng nhau do đó không xác định === null trả về false

Là == Một toán tử so sánh?

Toán tử == là toán tử so sánh .

=== Là một toán tử so sánh JS?

=== (Ba bằng) là toán tử so sánh đẳng thức nghiêm ngặt trong JavaScript , trả về false cho các giá trị không cùng loại. Toán tử này thực hiện ép kiểu cho bình đẳng. Nếu chúng ta so sánh 2 với “2” bằng cách sử dụng ===, thì nó sẽ trả về giá trị sai.

== và === trong JavaScript là gì?

=== — bình đẳng nghiêm ngặt (ba bằng) == — bình đẳng lỏng (bằng kép)

6 toán tử so sánh trong JavaScript là gì?

Toán tử so sánh JavaScript