Câu hỏi phỏng vấn Javascript
Câu hỏi

Kết quả shape của đoạn code sau là gì? Hãy giải thích tại sao?

Câu trả lời

javascript Copy
  const box = { x: 10, y: 20 };
  Object.freeze(box);
  const shape = box;
  shape.x = 100;
  console.log(shape);
  • A: { x: 100, y: 20 }
  • B: { x: 10, y: 20 }
  • C: { x: 100 }
  • D: ReferenceError

Đáp án: B

Object.freeze khiến cho chúng ta không thể thêm vào, xóa đi hay thay đổi bất kì thuộc tính nào của object (trừ phi giá trị của thuộc tính lại chính là một object khác).

Khi chúng ta tạo ra biến shape và set cho nó giá trị bằng với một object đã được đóng băng là box, thì shape cũng sẽ trỏ tới một object đã được đóng băng. Ta có thể check một object có đang bị đóng băng hay không bằng Object.isFrozen. Trong trường hợp này, Object.isFrozen(shape) trả về true, vì shape đang trỏ tới một object bị đóng băng.

Do đó, cộng với việc x không phải là object, ta sẽ không thể thay đổi giá trị của x. x sẽ vẫn là 10, và { x: 10, y: 20 } được ghi ra.

middle

middle

Gợi ý câu hỏi phỏng vấn

middle

Làm sao để deep-freeze một đối tượng trong JavaScript?

middle

Lập trình bất đồng bộ trong Javascript là gì?

middle

Kết quả set của đoạn code sau là gì? Hãy giải thích tại sao?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào