Hàm trong javascript
Nguyễn Dương 19-06-20241. Định nghĩa
- Hàm đơn giản là một đoạn code mà chúng ta có thể sử dụng lặp đi lặp lại trong chương trình
- Hàm hơi giống biến nhưng nó là một tập các đoạn code, biến chứa giá trị còn hàm chứa một hoặc nhiều dòng code hoàn chỉnh
- Khai báo hàm bao gồm tên hàm, tham số truyền vào, thân hàm
- Có thể truyền tham số đầu vào cho một hàm và hàm cũng có thể trả về một giá trị
- Sử dụng từ khóa return để trả về giá trị cho một hàm
2. Cách khai báo
- Cách cơ bản
- Cách khai báo theo biến số
- Cách khai báo hàm mũi tên (Arrow function)
Arrow Function hay hàm mũi tên là một biểu thức hàm nhưng được viết ngắn gọn hơn với dấu mũi tên ( => )
Nếu chỉ có 1 tham số truyền vào thì không cần dấu ngoặc tròn (). Nếu chỉ thực thì 1 dòng lệnh đơn giản, return ra luôn kết quả thì không cần dấu ngoặc nhọn và từ khóa return.
3. Callback, hàm trả về hàm
- Truyền một biến primitive vào trong một hàm giống việc tạo một bản sao biến bên ngoài function.
- Khi truyền một object vào một function nó cũng giống như việc sao chép một object bên ngoài, đều trỏ tới một giá trị object trong bộ nhớ heap. Điều này dễ gây ra lỗi khi hai function cùng thao tác trên một object.
Có 2 thuật ngữ được dùng khi xử lý function là :
- Truyền vào giá trị (pass by value): JS có
- Truyền vào tham chiếu (pass by reference): JS không có
First-Class function – gán một biến cho 1 hàm
- JS là ngôn ngữ có các first-class function, có nghĩa là các function được coi như là các giá trị.
- Các function là một loại object đặc biệt trong JS, coi các function là các giá trị nên có thể:
1. lưu trữ function trong các biến hoặc các thuộc tính của object
2. truyền các function làm đối số cho các function khác (ví dụ addEventListener() trong DOM)
3. trả về một function từ một function khác
4. Gọi phương thức trong function
Higher-Order Function - lấy các hàm khác làm đối số hoặc trả về các hàm làm kết quả của chúng
- Higher Order Funtion là một function nhận một function khác như một đối số hoặc một function trả về một function mới.
1. Function là một đối số truyền vào function khác: Function này thường được gọi là callback function, callback function sẽ được gọi sau bởi higher order function
2. Function trả về một function khác
- callback
- Hàm transformer là Higher order function, nó nhận đối số truyền vào là hàm upperFirstWord.
- Hàm transformer sẽ chịu trách nhiệm gọi hàm upperFirstWord, hàm upperFirstWord được gọi là một callback function.
- Hàm là một object nên nó cũng có một thuộc tính là name. // fn.name trả về tên hàm.
- hàm trả về hàm
Tại sao hàm callback lại hữu ích và trở nên thông dụng
- Giúp dễ dàng phân tách hoặc viết code thành nhiều phần có thể tái sử dụng và kết nối với nhau.
- Tạo ra sự trừu tượng, ẩn chi tiết của một số code được thực thi bởi vì chúng ta không thực sự quan tâm đến những chi tiết đó.