JavaScript coi các hàm là các đối tượng và cho phép chúng ta chuyển các hàm dưới dạng tham số sang một hàm khác và thậm chí trả về các hàm từ các hàm khác. Trong JavaScript, các hàm là các hàm hạng nhất nghĩa là chúng ta có thể lưu trữ chúng trong biến, đối tượng và mảng. Các hàm bậc cao hơn có thể nhận hàm, trả về hoặc thực hiện cả hai
Sau đây là đoạn mã để triển khai các hàm hạng nhất trong JavaScript -
Thí dụ
Bản thử trực tiếp
Document First class function in Javascript[22,33,44,55]
CLICK HEREClick on the above button to double each element of the above array
đầu ra
Khi nhấp vào nút 'BẤM VÀO ĐÂY' -
Tóm lược. trong hướng dẫn này, bạn sẽ biết rằng các hàm JavaScript là công dân hạng nhất. Điều này có nghĩa là bạn có thể lưu trữ các hàm trong các biến, chuyển chúng sang các hàm khác dưới dạng đối số và trả về chúng từ các hàm khác dưới dạng giá trị
Lưu trữ các chức năng trong các biến
Hàm là công dân hạng nhất trong JavaScript. Nói cách khác, bạn có thể coi các hàm giống như các giá trị của các loại khác
Phần sau định nghĩa hàm
2 và gán tên hàm cho biếnCode language: JavaScript [javascript]
let result = sum[10,20];
3Code language: JavaScript [javascript]
let result = sum[10,20];
Code language: JavaScript [javascript]
function add[a, b] { return a + b; } let sum = add;
Trong câu lệnh gán, chúng tôi không bao gồm dấu ngoặc đơn mở và đóng ở cuối định danh
4. Chúng tôi cũng không thực thi chức năng nhưng tham chiếu chức năngCode language: JavaScript [javascript]
let result = sum[10,20];
Bằng cách này, chúng ta có thể có hai cách để thực hiện cùng một chức năng. Ví dụ, chúng ta có thể gọi nó bình thường như sau
let result = add[10, 20];
Code language: JavaScript [javascript]
Ngoài ra, chúng ta có thể sử dụng tất cả hàm
2 thông qua biếnCode language: JavaScript [javascript]
let result = sum[10,20];
3 như thế nàyCode language: JavaScript [javascript]
let result = sum[10,20];
Code language: JavaScript [javascript]
let result = sum[10,20];
Truyền một chức năng cho một chức năng khác
Vì các hàm là các giá trị nên bạn có thể chuyển một hàm làm đối số sang một hàm khác
Phần sau đây khai báo hàm
7 nhận ba đối số. Đối số thứ ba là một hàmCode language: JavaScript [javascript]
let result = sum[10,20];
Code language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
Bây giờ, bạn có thể chuyển hàm
3 sang hàmCode language: JavaScript [javascript]
let result = sum[10,20];
7 như sauCode language: JavaScript [javascript]
let result = sum[10,20];
Code language: JavaScript [javascript]
let result = average[10, 20, sum];
Đặt nó tất cả cùng nhau
Code language: JavaScript [javascript]
function add[a, b] { return a + b; } let sum = add; function average[a, b, fn] { return fn[a, b] / 2; } let result = average[10, 20, sum]; console.log[result];
đầu ra
15
Trả về chức năng từ các chức năng
Vì các hàm là các giá trị, bạn có thể trả về một hàm từ một hàm khác
Hàm
0 sau đây trả về một hàm so sánh hai đối tượng theo một thuộc tínhCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
function compareBy[propertyName] { return function [a, b] { let x = a[propertyName], y = b[propertyName]; if [x > y] { return 1; } else if [x < y] { return -1; } else { return 0; } }; }
Code language: JavaScript [javascript]
Lưu ý rằng
1 trả về giá trị củaCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
2 của đối tượngCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
3. Nó tương đương vớiCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
4. Tuy nhiên, nếuCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
2 chứa khoảng trắng nhưCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
6, bạn cần sử dụng ký hiệu dấu ngoặc vuông để truy cập nóCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
Giả sử bạn có một mảng đối tượng sản phẩm trong đó mỗi đối tượng sản phẩm có hai thuộc tính.
7 vàCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
8Code language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
Code language: JavaScript [javascript]
let products = [ {name: 'iPhone', price: 900}, {name: 'Samsung Galaxy', price: 850}, {name: 'Sony Xperia', price: 700} ];
Bạn có thể sắp xếp một mảng bằng cách gọi phương thức
9. Phương thứcCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
9 chấp nhận một hàm so sánh hai phần tử của mảng làm đối sốCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
Ví dụ: bạn có thể sắp xếp các đối tượng sản phẩm dựa trên tên bằng cách chuyển một hàm được trả về từ hàm
0 như sauCode language: JavaScript [javascript]
function average[a, b, fn] { return fn[a, b] / 2; }
Code language: JavaScript [javascript]
console.log['Products sorted by name:']; products.sort[compareBy['name']]; console.table[products];
đầu ra
0Code language: JavaScript [javascript]
let result = add[10, 20];
Tương tự, bạn có thể sắp xếp các đối tượng sản phẩm theo giá
1Code language: JavaScript [javascript]
let result = add[10, 20];
đầu ra
2Code language: JavaScript [javascript]
let result = add[10, 20];
Đặt nó tất cả cùng nhau
3Code language: JavaScript [javascript]
let result = add[10, 20];
Các chức năng JavaScript khác là ví dụ về Công dân hạng nhất
Ví dụ sau định nghĩa hai hàm chuyển đổi độ dài tính bằng centimet thành inch và ngược lại
4Code language: JavaScript [javascript]
let result = add[10, 20];
Hàm
2 sau đây có hai tham số. Tham số đầu tiên là một hàm và tham số thứ hai là độ dài sẽ được chuyển đổi dựa trên đối số đầu tiênCode language: JavaScript [javascript]
let result = average[10, 20, sum];
5Code language: JavaScript [javascript]
let result = add[10, 20];
Để chuyển đổi
3 thànhCode language: JavaScript [javascript]
let result = average[10, 20, sum];
4, bạn có thể gọi hàmCode language: JavaScript [javascript]
let result = average[10, 20, sum];
2 và chuyển hàmCode language: JavaScript [javascript]
let result = average[10, 20, sum];
6 vào hàmCode language: JavaScript [javascript]
let result = average[10, 20, sum];
2 làm đối số đầu tiênCode language: JavaScript [javascript]
let result = average[10, 20, sum];
6Code language: JavaScript [javascript]
let result = add[10, 20];
đầu ra
7Code language: JavaScript [javascript]
let result = add[10, 20];
Tương tự, để chuyển đổi độ dài từ inch sang cm, bạn có thể chuyển hàm
8 thành hàmCode language: JavaScript [javascript]
let result = average[10, 20, sum];
2, như thế nàyCode language: JavaScript [javascript]
let result = average[10, 20, sum];