Funzioni di prima classe e funzioni di ordine elevato in JavaScript
Una funzione è un blocco di codice progettato per eseguire una particolare attività. Le funzioni sono elementi costitutivi fondamentali molto importanti e potenti in JavaScript. Se stai iniziando a essere coinvolto con le funzioni in JavaScript, probabilmente hai iniziato a sentire i termini "Funzioni di prima classe" e "Funzioni di ordine elevato". Diamo un'occhiata a ciò che questi termini stanno cercando di trasmettere, la connessione tra loro e ciò che ci forniscono.
JavaScript ha tutte quelle abilità o caratteristiche che richiedono di essere un linguaggio con funzioni di prima classe, quindi le funzioni sono trattate come cittadini di prima classe. Ebbene il significato di “cittadini (oggetti) di prima classe” è che nel linguaggio di programmazione una data entità (funzione) supporta tutte le proprietà operative inerenti ad altre entità; proprietà come la possibilità di essere assegnate a una variabile, passate come argomento di una funzione, restituite da una funzione... Fondamentalmente, cittadinanza di prima classe significa semplicemente "essere in grado di fare ciò che possono fare tutti gli altri". Di conseguenza, si dice che il linguaggio di programmazione abbia funzioni di prima classe quando le funzioni in quel linguaggio sono trattate come qualsiasi altra variabile.
Diamo un'occhiata a quali funzioni l'essere un cittadino di prima classe ci fornisce su JavaScript e quali porte ci aprono tutti i tipi di paradigmi e tecniche programmatiche che altrimenti non sarebbero possibili.
- Possibilità di memorizzare funzioni in una variabile
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)

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































