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

Nêu một số trường hợp không nên sử dụng arrow functions trong Javascript?

Câu trả lời

Trong JavaScript ES6, Arrow Functions mang lại cú pháp ngắn gọn và tiện lợi cho việc viết hàm, nhưng không phải lúc nào chúng cũng là lựa chọn tốt nhất. Dưới đây là một số trường hợp bạn không nên sử dụng Arrow Functions:

  1. Khi cần sử dụng this trong ngữ cảnh động: Arrow Functions không có this riêng của chúng. this trong Arrow Functions được xác định bởi ngữ cảnh bên ngoài (lexical this) khi hàm được khai báo, không phải khi hàm được gọi. Điều này có thể gây ra vấn đề khi bạn cần this để tham chiếu đến đối tượng chứa hàm đó, như trong các phương thức của đối tượng hoặc khi xử lý sự kiện
  2. Khi định nghĩa phương thức trong đối tượng: Nếu bạn sử dụng Arrow Functions để định nghĩa phương thức trong một đối tượng, this sẽ không trỏ đến đối tượng đó mà trỏ đến ngữ cảnh bên ngoài, thường là window hoặc undefined trong strict mode. Điều này làm cho Arrow Functions không phù hợp để định nghĩa phương thức trong đối tượng
  3. Khi sử dụng làm hàm khởi tạo (constructor): Arrow Functions không thể sử dụng làm hàm khởi tạo và sẽ báo lỗi nếu bạn cố gắng sử dụng new với Arrow Function. Điều này là do Arrow Functions không có this riêng và không có thuộc tính prototype
  4. Khi cần sử dụng arguments object: Arrow Functions không cung cấp đối tượng arguments giống như các hàm thông thường. Nếu bạn cần truy cập vào các đối số được truyền vào hàm mà không được định nghĩa trước trong danh sách tham số, Arrow Functions sẽ không phù hợp
  5. Khi cần định nghĩa các phương thức trong class: Khi sử dụng Arrow Functions để định nghĩa phương thức trong class, bạn có thể gặp phải vấn đề với this giống như khi định nghĩa phương thức trong đối tượng. this trong Arrow Functions sẽ không trỏ đến instance của class

Tóm lại, mặc dù Arrow Functions mang lại nhiều lợi ích về cú pháp ngắn gọn và tiện lợi, nhưng chúng không phù hợp cho mọi tình huống, đặc biệt là khi cần sử dụng this trong ngữ cảnh động, định nghĩa phương thức trong đối tượng hoặc class, sử dụng làm hàm khởi tạo, hoặc khi cần truy cập vào đối tượng arguments.

middle

middle

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

middle

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

middle

Khi nào cần sử dụng asyncdefer trong javascript?

middle

Hãy cho biết kết quả đoạn code sau?

Bình luận

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

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