Hi 🤓 Cảm ơn bạn đã ghé thăm blog này, nếu những bài viết trên blog giúp ích cho bạn. Bạn có thể giúp blog hiển thị quảng cáo bằng cách tạm ngừng ad blocker 😫 và để giúp blog duy trì hoạt động nếu bạn muốn.
Cảm ơn bạn!

JavaScript cung cấp cho chúng ta 3 kiểu so sánh giá trị là:

  • ===: strict equality
  • ==: loose equality
  • Object.is

Với so sánh =====, các bạn có lẽ cũng đã quen thuộc khi học JavaScript, chúng được sử dụng nhiều trong các bài toán của chúng ta 😁. Hôm nay chúng ta sẽ tìm hiểu về method Object.is xem nó có gì khác với hai so sánh còn lại không nhé ^^.

Object.is()

Object.is() cũng như các so sánh khác, chúng được sử dụng để so sánh hai giá trị. Kết quả là một giá trị Boolean(true, false).

Để sử dụng method này thì ta chỉ cần truyền 2 giá trị muốn so sánh vào method. Ví dụ: Object.is(12, -12) => false.

Khi so sánh Object.is() với === thì chúng có kết quả khi so sánh hai giá trị khá giống nhau, tuy nhiên cả hai sử dụng các thuật toán so sánh khác nhau. Với Object.is() sử dụng The SameValue Algorithm, còn === sử dụng The Strict Equality Comparison Algorithm.

Cách xử lý cả hai khác nhau khi so sánh các special numeric values như NaN, -0+0.

Ví dụ khi so sánh sử dụng Object.is():

// Trả về kết quả so sánh giống với "==="
Object.is(10, 10); // true
Object.is('homiedev.com', 'homiedev.com'); // true
Object.is('Trang', 'trang');      // false
Object.is(null, null);            // true
Object.is(undefined, undefined);  // true
Object.is(["wow"], ["wow"]);      // false

// Signed zero
Object.is(0, -0); // false
0 === -0          // true

Object.is(+0, -0); // false
+0 === -0          // true

Object.is(-0, -0); // true
-0 === -0          // true

Object.is(0n, -0n); // true
0n === -0n          // true

// NaN
Object.is(NaN, 0/0); // true
NaN === 0/0          // false

Object.is(NaN, Number.NaN) // true
NaN === Number.Nan         // false

Object.is(NaN, NaN) // true
NaN === NaN // false

Khi nào nên sử dụng Object.is()?

Như ở ví dụ trên ta đã thấy điểm khác biệt giữa Object.is()===. Trong hầu hết các trường hợp, toán tử === là một cách tốt để chúng ta so sánh các giá trị.

Nếu các bạn muốn coi các giá trị NaN là giống nhau(return true) hoặc phân biệt chặt chẽ hơn giữa các số âm và dương(+0, -0), thì chúng ta có thể sử dụng Object.is() trong trường hợp này 😅.

Kết luận

Hy vọng bài viết sẽ giúp các bạn hiểu hơn về Object.is() trong JavaScript. Chúng ta sẽ gặp lại nhau trong các bài viết sắp tới nhé.

Cảm ơn các bạn đã đọc bài viết.

Có thể bạn thích ⚡
homiedev
About Me

Hi, I'm @devnav. Một người thích chia sẻ kiến thức, đặc biệt là về Frontend 🚀. Trang web này được tạo ra nhằm giúp các bạn học Frontend hiệu quả hơn 🎉😄.

Chúc các bạn tìm được kiến thức hữu ích trong blog này 😁😁.