São funções que representam expressões.
Nomeação é opcional. Quando não há nomeação, chamamos de função anônima.
Nunca são invocadas diretamente, sempre são atribuídas, pois variáveis podem armazenar funções.
var fn1 = function fnNomeada() {
console.log('função nomeada');
};
var fn2 = function () {
console.log('função anônima');
};
Arrow Functions - Expressões de Funções de Sintaxe Curta
Arrow Functions
Introduzidas no ES6 com um formato mais enxuto.
Nomeação não existe, portanto sempre serão funções anônimas.
Arrow significa seta "=>".
Sintaxe Básica: var fn () => {}
// Apenas um argumento de entrada, pode-se omitir os parênteses
var fn = message => { console.log(message); };
// Exceto...
var fn = ({a}) => a; // Objeto literal
var fn = (...a) => a; // Spread Operator
var fn = (a = 5) => a; // Default Arguments
// Apenas uma instrução, pode-se omitir as chaves
var fn = () => console.log('Hello World');
// Apenas uma instrução, pode-se omitir o return
var fn = (a, b) => a - b;
// Retorno de objeto literal, deve ser entre parenteses ()
var fn = () => ( {name:'Heviane', age:39} );
- Não faz Hoisting, portanto, não é possível invocar a função antes de declará-la.
- this sempre será o objeto global. Métodos para modificar seu valor (call(), apply(), bind()) não funcionam.
- arguments não existe.
- Método Constructor não existe.
Boa Prática: Não use arrow functions para métodos de objetos.