JS-0205 - JavaScript Completo ES6 - Funções

Os blocos de construção fundamentais
Funções, um das partes mais importante em JavaScript. São blocos de códigos que podem ser executados e reutilizados. Os valores podem ser passados para estas funções e retornados processados ou não. Ex:
function areaRetangulo (base, altura) {
return base * altura;
}
areaRetangulo(4, 5) // 20
areaRetangulo(5, 3) // 15
areaRetangulo(2, 1) // 2
O que se encontra dentro das chaves é a função em si. O return é quem devolve o valor da função, caso haja algum retorno, pois há funções que não retornam valores (chamadas de função void) e o retorno é definido como undefined. Mesmo que não haja retorno, a função não deixa de ser executada.
A chamada da função é realizada declarando o nome da função e passando os argumentos ou não, entre parenteses. Ao criar uma função podem ser definidos parâmetros necessários para a sua execução. Não há limites quanto a quantidade de argumentos, mas se deve avaliar a performance ambiental. O parênteses executa a função e a função será executada somente quando declara, invocando-a pelo nome e os parênteses com seus argumentos caso necessários.
Os argumentos também podem ser funções. Estas funções são chamadas de callback e geralmente ocorrem após algum evento. Ex:
btn.addEventListener('click', function() {
alert('Evento de clique');
});
// A função possui dois argumentos
// Primeiro é a string 'click'
// Segundo é a função alert
Este tipo de função possui dois argumentos, o evento, e a função que será executada na ocorrência do evento que neste caso foi o clique. Ainda há uma observção neste tipo de caso. A função passada como argumento não tem nome definido, foi passado apenas function. Este tipo de função, sem nome, é chamada de função anônima e geralmente são escritas da seguinte forma: function() {} ou () => {}.
Funções diferentes devem ter nomes diferentes, se não elas serão sobrescritas.
Uma função pode retornar qualquer tipo de dado e até outras funções. O return quando executado encerra o processo de execução do bloco da função ao qual ele retorna. Caso haja algo depois do return dentro de uma função, ele não será executado.
Há algo que influencia diretamente a visibilidade e uso dos argumentos e parâmetros de uma função, o escopo. Variáveis e funções definidas dentro de um bloco (entre as chaves) de uma função, não são visíveis fora dele. Ex:
function precisoProvar(pratosProvados) {
var totalPratos = 99999;
return "Ainda faltam " + totalPratos - pratosProvados + " pratos para degustar!"
}
console.log(totalPratos); // erro, totalPratos não definido
Contudo, as funções conseguem acessar variáveis que foram criadas no contexto pai. Este tipo de escopo é chamado de Escopo Léxico.
Assim como ocorre com variáveis, o JS move todas as funções declaradas para a memória, executando o Hoisting, dentro do seu escopo, podendo ser local (quando declaradas dentro de uma função por exemplo), ou global.
Este conteúdo ainda é uma introdução ás funções em JavaScript. Posteriormente o conteúdo será ampliado para recursos avançados. Antes disso, ainda tem muito conteúdo a ser abordo.
Na sequência, será abordado Objetos, "O Tudo" em JS e você entenderá o porquê!