Funções

Tipos de função

Aula 02 a 03 - Estrutura e função anonima / Função autoinvocável e Callbacks
Declarando funções:
function nome(params){
instruçoes
return
}

Funções podem ser declaradas em variáveis, nesse caso a função é anonima.
Funções autoinvocáveis ou IIFE(Immediately Invoked Function Expression) são funções declaradas entre parenteses e seguidas por outro par de paranteses que a executam automaticamente.
(function(param){
instruçoes
return
}(param);

Callbacks são funções passadas como argumento para outra função.

Parametros

Aula 04 a 05 - Valores padrão e Objeto 'arguments' / Arrays e Objetos
Antes do ES2015 não era possível passar valores default para os parametros, sendo necessário fazer testes lógicos para verificar se esse valor não é null. Após o ES2015 tornou-se possível atribuir um valor padrão ao parametro.
O arguments é um objeto com todos os parametros passados quando a função foi invocada. Ele pode ser invocado em qualquer função.
O arguments pode ser utilizado quando desejamos trabalhar sem um numero definido de parametros. Nesse caso podemos manipular os parametros no objeto arguments através das chaves(indices)
O spread operator(...nome_do_array) é uma forma de separarmos os valores de um array.
Quando desejamos passar o conteúdo de um array como parametros para uma função não podemos passar o array diretamente. Para que os valores do array sejam tratados como parametros separados podemos utilizar o spread operator
O rest operator é o inverso do spread operator, ou seja, recebe os parametros e inclui em um array de argumentos.
Já o destructuring permite filtrar atributos de um objeto. Para isso passamos o nome do atributo entre '{}'.

Loops

Aula 06 a 07 - If/else e Switch / For e While
Conhecendo loops com if/else. Dicas de simplificação de expressões.
Verificação com Switch/case.
Estrutura do loop for.
Utilização do loop for/in para propriedades enumeráveis.
Utilização do loop for/of para estruturas iteráveis (arrays e strings). Esse operador não consegue iterar objetos, diferente do for/in.
Explicação sobre os operadores while e do/while.

This

Aula 08 a 09 - O que é this / Manipulando seu valor
A palavra this é uma referencia de contexto. Quando estamos em um objeto chamado Objeto this fará referencia a Objeto.
O que é o this:
Contexto Referencia
Em um objeto (método) Próprio objeto dono do método
Sozinha Objeto global (em navegadores, window)
Função Objeto global
Evento Elemento que recebeu o evento

Desse modo o this pode se referir ao window ou ambiente global do node, ao escopo global da função, ao objeto ou ao próprio evento (nesse caso não funciona quando a função de cb for declarada como arrow function).
Quando fazemos referencias em funções com o this podemos chamar essa referencia com o método call(). Por exemplo, se temos uma função que tem como referencia this executamos a função seguida do método call(elemento_a_referenciar).
Outro método para passar referencias para o this é o apply(). A diferença do call() para o apply() é que no primeiro caso precisaemos passar mais parametros para a função passamos diretamente. No segundo os parametros adicionais devem ser passados em um array.
O método bind() clona a estrutura da função onde é chamado e aplica o valor do objeto passado como parametro.

Arrow functions

Aula 10 - Sintaxe e outras restrições
Sintaxe da arrow function
() => { instruções }
Quando temos apenas uma instrução a arrow function não exeige nem chaves {} nem return.
A arrow function não faz hoisting, ou seja não pode ser chamada antes de ser declarada, diferente das funções literais (mesmo que tentemos atribuir a arrow function a uma var).
Outras restriçoes são:
  • this sempre será objeto global. Métodos para modificar seu valor não irão funcionar;
  • Não existe o objeto arguments;
  • O construtor (ex: new MeuObjeto()) não pode ser utilizado
Aula 11 - Atividade prática Atividade prática
Atividade 1: Alunos Aprovados: Crie uma função que recebe o array alunos e um número que irá representar a média final; Percorra o array e popule um novo array auxiliar apenas com os alunos cujas notas são maiores ou iguais à média final; Utilize a técnica "object destructuring" para manipular as propriedades desejadas de cada aluno.
Dada a função calculaIdade, utilize os métodos call e apply para modificar o valor de this. Crie seus próprios objetos para esta atividade!