Skip to main content

Command Palette

Search for a command to run...

CTN 05. So sánh 2 object

Published
2 min read

Hello! I'm Zu.Doan

Series này mình muốn rèn luyện khả năng suy nghĩ và giải bài tập, qua đó để hiểu rõ hơn các khái niệm của Javascript.

Bài 1

let x = {};
let y = {};
let z = x;

console.log(x == y);
console.log(x === y);
console.log(x == z);
console.log(x === z);

Lời giải:

let x = {};
let y = {};
let z = x;

console.log(x == y); // x và y đều là object rỗng, tuy nhiên JS không so sánh được giá trị của object => false
console.log(x === y); // tương tự như trên => false
console.log(x == z); // x,z cũng là 2 object rỗng, tuy nhiên 2 biến này cùng trỏ tới một vị trí ô nhớ => true
console.log(x === z); // tương tự như trên => true

Kiến thức liên quan:

  • Để so sánh 2 object (có cùng thứ tự các phần tử trong object) thì có thể sử dụng phương pháp: JSON.stringify(obj1) === JSON.stringify(obj2)
  • Để so sánh 2 object (mà không quan tâm đến thứ tự phần tử trong object) thì có thể sử dụng lodash (isEqual)

Bài 2

console.log("hello");

setTimeout(() => console.log("world"), 0);

console.log("hi");

Lời giải:

console.log("hello"); // in ra ngay "hello"

setTimeout(() => console.log("world"), 0); 
// do nằm trong setTimeout nên hàm này sẽ là bất đồng bộ
// do đó khi chương trình này sẽ được đưa vào Web/Node API để thực thi và trả về callback cho event loop và sau đó đưa vào call stack => chạy sau console.log("hi")

console.log("hi"); // in ra ngay "hi"

// => Kết quả: "hello" => "hi" => "world"

Kiến thức liên quan:

  • Hiểu về Event loop trong JS

More from this blog

zujs

35 posts