Funções aninhadas em JavaScript
Funções são um bloco de código útil que pode ser chamado em qualquer lugar exigido em um programa. Uma função aninhada é uma função dentro de uma função. Esse recurso é suportado em muitas linguagens de programação, JavaScript incluído.
Apresentaremos funções aninhadas em JavaScript neste tutorial.
A função externa é denominada função externa. A função aninhada dentro é chamada de função interna. Cada função pode aceitar argumentos diferentes.
Eles podem ser implementados da seguinte maneira.
function a(x) { // Outer function
function b(y) { // inner function
return x - y;
}
return b;
}
console.log(a(5)(4))
Produção:
1
No exemplo acima, a()
é a função externa e b()
é a função interna. O resultado final retornado usa os argumentos de ambas as funções.
Funções são objetos de classe que podem ser definidos na função externa e criados como uma variável em qualquer parte da função. Este método é denominado currying.
Veja o código abaixo.
function outer(x) {
var w = function inner(y) {
return x * y;
} return w;
};
var outvar = outer(2);
console.log(outvar(4));
Produção:
8
As funções aninhadas têm outro benefício. Eles podem ser usados para realizar cálculos dentro de outra função, mesmo que sejam definidos externamente.
Por exemplo,
function calculate(a, b, fn) {
var c = a + b + fn(a, b);
return c;
}
function sum(a, b) {
return a + b;
}
function product(a, b) {
return a * b;
}
console.log(calculate(10, 20, sum));
console.log(calculate(10, 20, product));
Produção:
60
230