CTN 05. So sánh 2 object
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
