Bây giờ, mối quan tâm chính của chúng ta là tìm hiểu sự khác biệt giữa các toán tử '==' và '===' mà javascript cung cấp, mặc dù chúng trông giống nhau nhưng chúng rất khác nhau
- Toán tử JavaScript '=='. Trong Javascript, toán tử ‘==’ còn được gọi là toán tử đẳng thức lỏng lẻo, chủ yếu được sử dụng để so sánh hai giá trị ở cả hai phía rồi trả về true hoặc false. Toán tử này chỉ kiểm tra đẳng thức sau khi chuyển đổi cả hai giá trị thành một loại chung i. e loại cưỡng chế
Ghi chú. Ép buộc loại có nghĩa là hai giá trị chỉ được so sánh sau khi cố gắng chuyển đổi chúng thành cùng một loại. Hãy xem xét tất cả các giá trị trong đó toán tử '==' sẽ trả về true
Giá trị Boolean của chữ trong quá trình so sánh
Thật
- '0'
- 'false' // false được gói trong chuỗi
- []
- {}
- hàm số[]{}
Sai
- ” hoặc “” // chuỗi rỗng
- sai
- 0
- vô giá trị
- chưa xác định
- NaN // không phải là số
ví dụ 1.
jav
// '==' operator
console.log[21 == 21];
false false false false0_______0_______1
false false false false2
false false false false4_______0_______5
false false false false6
false false false false5
false false false false2
false false false false4_______9_______1
true true true2
false false false false4_______9_______5
true true true6
false false false false4_______9_______9
false false false0
false false false1
đầu ra. Trong đoạn mã trên, khi chúng ta so sánh 21 với '21', javascript sẽ chuyển đổi '21' thành giá trị số là 21 và do đó chúng ta nhận được giá trị true, điều tương tự cũng xảy ra khi chúng ta cố kiểm tra xem 'true == 1' .
Trường hợp của [null == undefined] là đặc biệt vì khi chúng ta so sánh các giá trị này, chúng ta nhận được true. Cả null và undefined đều là giá trị sai và chúng đại diện cho giá trị 'trống' hoặc không xác định trong js, do đó phép so sánh với toán tử '==' trả về true
true true true true true true
Bây giờ, hãy xem xét tất cả các giá trị mà toán tử '==' sẽ trả về false
ví dụ 2. Trong mã này khi chúng ta so sánh null với false, chúng ta nhận được false, vì null là kiểu dữ liệu nguyên thủy nên nó không bao giờ có thể bằng giá trị boolean, mặc dù chúng thuộc cùng một nhóm false
jav
false false false3_______57_______
false false false3_______16_______6
false false false3_______0_______0_______16_______9
false false false false2
false false false3_______0_______4
true true true1
true true true6
false false false3_______0_______4_______9_______9
false false false false6
true true true5
false false false false2
false false false1
đầu ra
false false false false
Toán tử JavaScript '==='. Còn được gọi là toán tử đẳng thức nghiêm ngặt, nó so sánh cả giá trị và loại, đó là lý do tại sao có tên là "bình đẳng nghiêm ngặt"
ví dụ 1. Hãy xem một số mã trong đó toán tử '===' sẽ trả về true
jav
false false false1
4
false false false false4_______56_______7
8
7false false false false2
false false false false4_______9_______1
8true true true1
false false false false2
// '==' operator
8
false false false1
đầu ra
true true true
ví dụ 2. Chỉ cần kiểm tra các loại và giá trị ở cả hai bên và sau đó chỉ cần in ra giá trị boolean đúng hoặc sai. Một số ví dụ mà nó sẽ trả về false
jav
4
false false false false4_______9_______1
6
0_______4_______9_______1
8console.log[21 == 21];
1
false false false false2
console.log[21 == 21];
4_______59_______5
false false false false2
false false false1
đầu ra
false false false
Vui lòng xem qua bài viết về Sự khác biệt giữa gấp đôi bằng và gấp ba bằng JavaScript để so sánh các toán tử '===' và '=='