Funções
As funções servem basicamente para guardar um bloco de código, que é uma sequência de comandos que poderá ser executada múltiplas vezes. Guardar essa sequência de comandos em uma função significa que, além de organizar o código, vamos evitar ter que escrever os mesmos comandos repetidas vezes.
Vamos começar com um exemplo o mais simples possível.
// Criação da função
function soma_numeros() {
var x = 5;
var y = 2;
var soma = x + y;
console.log(soma);
}
// Ao criar a função, nada acontece ainda. Precisamos invocá-la para executar os comandos:
soma_numeros(); // O console mostrará 7
Vejamos alguns pontos importantes sobre o exemplo acima:
- Usamos a keyword function para criar uma nova função.
- Em seguida, damos-lhe um nome, seguindo as mesmas regras dos identificadores das variáveis.
- Entre os parênteses vão entrar os argumentos da função, algo que vamos ver logo em seguida. Mesmo que a função não tenha argumentos, como é o caso, é preciso abrir e fechar os parênteses assim mesmo.
- Entre as chaves '{ }' escreveremos todos os comandos que deverão ser executados quando invocarmos a função.
- A criação de uma função não exige o uso de ponto e vírgula ao final, apenas nos comandos internos.
- Depois de criada a função ela pode ser invocada a qualquer momento, e todo o bloco de código será executado.
- Na hora de invocar a função também devemos usar os parênteses, tendo a função argumentos ou não.
Argumentos da função
Os argumentos da função são como se fossem variáveis, que podemos usar dentro da função. No exemplo acima a função é estática, ela sempre vai somar 5 + 2. Seria mais interessante que ela pudesse somar números diferentes, algo que podemos fazer facilmente com argumentos.
/* Criaremos dois argumentos na hora de criar a função, que funcionarão como variáveis dentro da função.
Podemos criar quantos argumentos quisermos, basta separá-los por vírgula. */
function soma_args(num1,num2) {
var soma = num1 + num2;
console.log(soma);
}
/* Agora ao invocar a função, temos necessariamente que atribuir valores para todos os argumentos,
na mesma ordem em que eles foram criados: */
soma_args(10,25); // O console mostrará 35
soma_args(1000,375); // O console mostrará 1375
soma_args(-2,47); // O console mostrará 45
Os argumentos da função não precisam ser valores brutos, eles podem ser variáveis já criadas anteriormente. Vejamos no exemplo abaixo uma função que calcula o IMC (índice de massa corporal) de uma pessoa, com valores guardados em variáveis.
// a fórmula do IMC é: peso em kg / (altura em metros x altura em metros)
function calc_imc(peso,altura) {
var imc = peso / (altura * altura);
console.log(imc);
}
// agora podemos rodar a função com os valores que quisermos e assim clacular o IMC:
var meu_peso = 72;
var minha_altura = 1.70;
calc_imc(meu_peso,minha_altura); // O console mostrará 24.913494809688583
Tome bastante cuidado para não confundir os argumentos da função com variáveis. Os argumentos da função só funcionam dentro da função e eles não tem nenhum valor na hora da criação, apenas quando a função é invocada. Inclusive é uma boa prática evitar usar nomes iguais. No exemplo acima poderíamos ter usado os nomes peso e altura para as variáveis, não haveria nenhum problema, mas é preferível não fazer isso, para evitar qualquer confusão entre argumentos e variáveis.
A função também poderia se chamar imc, que é o mesmo nome de uma variável usada dentro dela, mas é preferível não fazer isso.
O comando return
No exemplo do IMC acima, a própria função calcula o IMC e solta-o no console. Se nós quisermos soltar o IMC dentro de algum elemento HTML teremos que alterar a função. Por isso é interessante que, ao invés de realizar algum comando dentro da função, que a função apenas retorne um resultado, com o qual poderemos trabalhar fora da função conforme a situação exigir.
function valor_imc(peso,altura) {
var imc = peso / (altura * altura);
return imc;
}
// agora podemos guardar o valor retornado pela função numa variável e usá-la como quisermos.
var meu_peso = 72;
var minha_altura = 1.70;
var meu_imc = valor_imc(meu_peso,minha_altura);
console.log(meu_imc);
/* Agora esta variável meu_imc poderia também ser colocada num elemento HTML ou ser usada em outros cálculos,
como por exemplo numa função que dirá se o IMC calculado está dentro ou fora dos valores normais.
Vamos agora usar as informações que estão nas caixas "peso" e "altura", passá-las como argumento da função, e soltar o IMC na caixa "imc".