+16

Arrow Function trong JavaScript

Arrow function (hàm mũi tên) là một cách khai báo hàm ngắn gọn hơn so với phương thức khai báo hàm truyền thống trong JavaScript. Nó được giới thiệu từ ECMAScript 6 (ES6) và là một tính năng rất phổ biến trong React, đặc biệt là trong các functional components.

Cú pháp của Arrow Function

Arrow function sử dụng dấu => để tách biệt giữa tham số và phần thân hàm. Đây là cú pháp cơ bản:

const functionName = (parameter1, parameter2) => {
  // code
}

Ví dụ:

const sum = (a, b) => {
  return a + b;
};

console.log(sum(3, 5)); // Output: 8

Nếu hàm chỉ có một tham số, ta có thể bỏ qua dấu ngoặc:

const square = x => x * x;

console.log(square(4)); // Output: 16

Nếu hàm không có tham số, cần dùng dấu ngoặc tròn trống:

const sayHello = () => console.log('Hello, world!');
sayHello(); // Output: Hello, world!

Ưu điểm của Arrow Function

Cú pháp ngắn gọn

Với cú pháp ngắn gọn, arrow function giúp giảm bớt độ dài và giúp code trở nên dễ đọc hơn.

Ví dụ:

// Arrow function
const multiply = (a, b) => a * b;

So với:

// Function declaration
function multiply(a, b) {
  return a * b;
}

Không có this riêng

Một trong những đặc điểm quan trọng của arrow function là nó không có this riêng. Thay vào đó, nó kế thừa this từ ngữ cảnh bên ngoài. Điều này làm cho arrow function đặc biệt hữu ích khi làm việc với các callback hoặc trong React khi cần giữ giá trị của this trong các phương thức.

Ví dụ:

class Counter {
  constructor() {
    this.count = 0;
  }

  // Arrow function giữ nguyên `this` từ constructor
  increment = () => {
    this.count++;
    console.log(this.count);
  };
}

const counter = new Counter();
const incrementFn = counter.increment;
incrementFn(); // Output: 1

Ở ví dụ trên, nếu không dùng arrow function, bạn sẽ cần phải sử dụng .bind(this) để đảm bảo this trong phương thức increment luôn tham chiếu đúng đối tượng Counter.

Khi nào nên sử dụng Arrow Function

  • Khi làm việc với callback functions (ví dụ trong các sự kiện trong React hoặc JavaScript thuần).
  • Khi bạn cần giữ this của ngữ cảnh bên ngoài, chẳng hạn như trong các phương thức của class.
  • Khi muốn code ngắn gọn và dễ đọc.

Lưu ý khi sử dụng Arrow Function

  • Không dùng làm constructor: Arrow function không thể được gọi với new vì chúng không có prototype.
const Person = (name) => {
  this.name = name; // Lỗi: Cannot set property 'name' of undefined
};
const john = new Person("Hung"); // Sẽ gây lỗi
  • Không có arguments: Arrow function không có đối tượng arguments, vì vậy nếu bạn cần truy cập vào danh sách các đối số, bạn phải sử dụng một cách khác (ví dụ, dùng Rest Parameters).

🔚 Kết luận

Arrow function là một phần quan trọng trong JavaScript hiện đại, giúp việc khai báo và sử dụng các hàm trở nên ngắn gọn và dễ hiểu hơn. Tuy nhiên, cần lưu ý rằng arrow function có sự khác biệt so với các function declaration truyền thống, đặc biệt là cách mà chúng xử lý this và khả năng làm constructor. Vì vậy, bạn nên chọn sử dụng arrow function khi cần tối ưu cú pháp và duy trì this trong các tình huống callback, nhưng cần tránh sử dụng chúng như là constructor hoặc khi cần đối tượng arguments.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí