Hàm hạng nhất và hàm bậc cao trong JavaScript
Hàm là một khối mã được thiết kế để thực hiện một tác vụ cụ thể. Các hàm là các khối xây dựng cơ bản rất quan trọng và mạnh mẽ trong JavaScript. Nếu bạn bắt đầu tìm hiểu về các hàm trong JavaScript, có lẽ bạn đã bắt đầu nghe thấy các thuật ngữ “Hàm hạng nhất” và “Hàm bậc cao”. Chúng ta hãy xem những thuật ngữ này đang cố gắng truyền đạt điều gì, mối liên hệ giữa chúng và những gì chúng cung cấp cho chúng ta.
JavaScript có tất cả những khả năng hoặc tính năng đòi hỏi phải là ngôn ngữ có Hàm hạng nhất, do đó các hàm được coi là công dân hạng nhất. Vâng, ý nghĩa của “công dân hạng nhất (đối tượng)” là trong ngôn ngữ lập trình, thực thể (chức năng) đã cho hỗ trợ tất cả các thuộc tính hoạt động vốn có của các thực thể khác; các thuộc tính chẳng hạn như có thể được gán cho một biến, được truyền xung quanh dưới dạng đối số của hàm, được trả về từ một hàm... Về cơ bản, quyền công dân hạng nhất chỉ đơn giản có nghĩa là “có thể làm những gì mọi người khác có thể làm”. Kết quả là, ngôn ngữ lập trình được cho là có các hàm hạng nhất khi các hàm trong ngôn ngữ đó được coi như bất kỳ biến nào khác.
Hãy xem xét những chức năng mà một Công dân hạng nhất cung cấp cho chúng ta trên JavaScript và cánh cửa nào mở ra cho chúng ta tất cả các loại mô hình và kỹ thuật lập trình mà nếu không thì sẽ không thể thực hiện được.
- Khả năng lưu trữ các chức năng vào một biến
const summation = function (a,b) {
return a+b
}
summation(1,2) // 3
const foo = {
value: 1,
summation: function(a,b) {
return a+b+this.value
}
}
const sum = foo.summation(2,3)
console.log(sum) // 6
function sayHello() {
return "Hello ";
}
function sayHelloWorld(sayHello, param) {
console.log(sayHello() + param);
}
sayHelloWorld(sayHello, "World!") // "Hello World"
function sayHelloWorld() {
return () => {
console.log("Hello World!");
};
}
// First Approach
sayHelloWorld()() // "Hello World!"
// Second Approach
const greeting = sayHelloWorld()
greeting() // "Hello World!"
const fibonacci = (n) => (n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2));
console.log(fibonacci(10)) // 55
function sayHelloWorld() {
console.log(`${this.firstWord} ${this.secondWord}`);
}
const obj = {
firstWord: "Hello",
secondWord: "World!",
};
sayHelloWorld.call(obj) // "Hello World!"
const arr = [1, 2, 3, 4];
const initialValue = 0;
const sumWithInitial = arr.reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue
);
console.log(sumWithInitial) // 10
const sayHelloWorld = () => console.log("Hello World")
btn.addEventListener("onclick" , sayHelloWorld)

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































