Ý nghĩa của từ 'ẩn danh' định nghĩa một cái gì đó không rõ hoặc không có danh tính. Trong JavaScript, hàm ẩn danh là loại hàm không có tên hoặc chúng ta có thể nói là không có tên. Khi chúng ta tạo một hàm ẩn danh, nó được khai báo mà không có bất kỳ mã định danh nào. Đó là sự khác biệt giữa chức năng bình thường và chức năng ẩn danh. Không đặc biệt trong JavaScript mà còn trong các ngôn ngữ lập trình khác nhau. Vai trò của một chức năng ẩn danh là như nhau
Ở đây, trong phần này, chúng ta sẽ tìm hiểu về hàm ẩn danh và vai trò của nó trong JavaScript. Chúng ta cũng sẽ tìm hiểu và thảo luận về việc thực hiện nó
Triển khai Hàm ẩn danh trong JavaScript
Một ví dụ được hiển thị bên dưới sẽ giúp chúng ta hiểu cách sử dụng ẩn danh và tại sao nó khác với chức năng bình thường
Ví dụ
Đoạn mã trên là việc triển khai chức năng ẩn danh trong đó
- Hàm được tạo để hiển thị thông báo dưới dạng đầu ra của nó
- Chúng tôi đã sử dụng từ khóa hàm, được sử dụng khi chúng tôi tạo bất kỳ hàm nào trong JavaScript và hàm được gán cho một biến x bằng cách sử dụng 'let'
Điểm tập trung chính là không có chức năng nào chúng tôi đã khai báo trước đó. Nó chỉ là chức năng từ khóa và dấu ngoặc đơn. Trong trường hợp là một hàm bình thường, chúng ta sử dụng cách đặt tên cho hàm như trong ví dụ mã bên dưới
Ở đây, chúng ta đã tạo một hàm normale[], đây là một hàm bình thường. Đó là sự khác biệt giữa chức năng ẩn danh và chức năng bình thường
Cuối cùng, chúng ta đã gọi hàm đã tạo
Vì vậy, theo cách này, việc triển khai cơ bản của một chức năng ẩn danh đã được thực hiện
Sử dụng các hàm ẩn danh trong JavaScript
Chúng ta có thể sử dụng hàm ẩn danh trong JavaScript cho một số mục đích. Một số trong số họ được đưa ra dưới đây
- Truyền một hàm ẩn danh cho một hàm khác làm đối số của nó
- Chúng ta cũng có thể sử dụng một hàm ẩn danh làm đối số cho một hàm khác. Để hiểu rõ hơn, hãy triển khai một đoạn mã mà theo đó chúng ta sẽ chuyển hàm ẩn danh làm giá trị đối số cho một hàm khác
Đoạn mã trên triển khai việc sử dụng hàm ẩn danh làm đối số cho một hàm mới trong đó
- Hàm setTimeout[] sẽ xuất hàm ẩn danh sau một giây
- Chúng tôi đã tạo một hàm ẩn danh và chuyển nó tới setTimeout[] làm đối số của nó
- Bên trong nó, khi mã được thực thi, nó sẽ in câu lệnh sau một giây của thời gian thực thi
Đây là một trong những triển khai và sử dụng chức năng ẩn danh như vậy
Thực hiện ngay lập tức một chức năng
Để gọi và thực thi một hàm ngay sau khi khai báo, tạo một hàm ẩn danh là cách tốt nhất. Hãy xem một ví dụ để hiểu làm thế nào chúng ta có thể làm như vậy
Trong đoạn mã trên, hàm ẩn danh được gọi ngay khi nó hoạt động như được mô tả theo cách sau
Bước đầu tiên là xác định biểu thức hàm, như hình bên dưới
Sau khi xác định hàm, chúng ta có thể thấy dấu ngoặc đơn [] theo sau là dấu kết thúc [;] được sử dụng để gọi hàm đã xác định như hình bên dưới
Bằng cách này, chức năng ẩn danh có thể được gọi ngay lập tức
Ghi chú. Người ta cũng có thể truyền các đối số trong hàm và cũng gọi nó
Đây là một số cách sử dụng hàm ẩn danh để kết luận rằng hàm ẩn danh là hàm không có tên, có thể được gọi ngay lập tức và có thể được sử dụng làm giá trị đối số trong định nghĩa hàm thông thường
Tên chức năng. Có thể bỏ qua, trong trường hợp chức năng ẩn danh. Tên chỉ là cục bộ cho thân hàm
console.log[notHoisted]; // undefined
// Even though the variable name is hoisted,
// the definition isn't. so it's undefined.
notHoisted[]; // TypeError: notHoisted is not a function
var notHoisted = function [] {
console.log['bar'];
};
0 Không bắt buộcTên của một đối số được truyền cho hàm
console.log[notHoisted]; // undefined
// Even though the variable name is hoisted,
// the definition isn't. so it's undefined.
notHoisted[]; // TypeError: notHoisted is not a function
var notHoisted = function [] {
console.log['bar'];
};
1 Không bắt buộcCác câu lệnh bao gồm phần thân của hàm
Sự miêu tả
Một biểu thức hàm rất giống và có cú pháp gần giống như một khai báo hàm [xem câu lệnh function
để biết chi tiết]. Sự khác biệt chính giữa biểu thức hàm và khai báo hàm là tên hàm, có thể được bỏ qua trong biểu thức hàm để tạo hàm ẩn danh
Một biểu thức hàm có thể được sử dụng như một IIFE [Biểu thức hàm được gọi ngay lập tức] chạy ngay khi nó được xác định. Xem thêm chương về chức năng để biết thêm thông tin
cẩu biểu thức chức năng
Các biểu thức hàm trong JavaScript không được nâng lên, không giống như các khai báo hàm. Bạn không thể sử dụng các biểu thức hàm trước khi tạo chúng
console.log[notHoisted]; // undefined
// Even though the variable name is hoisted,
// the definition isn't. so it's undefined.
notHoisted[]; // TypeError: notHoisted is not a function
var notHoisted = function [] {
console.log['bar'];
};
Biểu thức hàm được đặt tên
Nếu bạn muốn tham chiếu đến hàm hiện tại bên trong thân hàm, bạn cần tạo một biểu thức hàm được đặt tên. Tên này sau đó chỉ cục bộ cho thân hàm [phạm vi]. Điều này cũng tránh sử dụng thuộc tính
console.log[notHoisted]; // undefined
// Even though the variable name is hoisted,
// the definition isn't. so it's undefined.
notHoisted[]; // TypeError: notHoisted is not a function
var notHoisted = function [] {
console.log['bar'];
};
3 không chuẩnconst math = {
factit: function factorial[n] {
console.log[n]
if [n