Funções de primeira classe e funções de alta ordem em JavaScript
Uma função é um bloco de código projetado para executar uma tarefa específica. As funções são blocos de construção fundamentais muito importantes e poderosos em JavaScript. Se você está começando a se envolver com funções em JavaScript, provavelmente já ouviu os termos “Funções de Primeira Classe” e “Funções de Alta Ordem”. Vamos dar uma olhada no que esses termos estão tentando transmitir, a conexão entre eles e o que eles nos fornecem.
O JavaScript tem todas as habilidades ou recursos que exigem ser uma linguagem com funções de primeira classe, portanto, as funções são tratadas como cidadãs de primeira classe. Bem, o significado de “cidadãos de primeira classe (objetos)” é que na linguagem de programação determinada entidade (função) suporta todas as propriedades operacionais inerentes a outras entidades; propriedades como ser capaz de ser atribuído a uma variável, passado como um argumento de função, retornado de uma função... Basicamente, cidadania de primeira classe significa simplesmente “ser capaz de fazer o que todo mundo pode fazer”. Como resultado, diz-se que a linguagem de programação tem funções de primeira classe quando as funções dessa linguagem são tratadas como qualquer outra variável.
Vejamos quais funções o First Class Citizen nos fornece em JavaScript e quais portas ele nos abre para todos os tipos de paradigmas programáticos e técnicas que de outra forma não seriam possíveis.
- Capacidade de armazenar funções em uma variável
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)





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)