<b> Funções de seta plana e fina do CoffeeScript </b>
No CoffeeScript, existem dois tipos diferentes de setas para definir funções: setas finas -> e setas grandes =>. A palavra-chave da função JavaScript foi substituída pela seta fina. A seta grande serve como palavra-chave de função e também vincula a função ao contexto atual.
Este exemplo de estouro de pilha mostra a diferença entre os dois.
class A
constructor: (@msg) ->
thin: -> alert @msg
fat: => alert @msg
x = new A("yo")
x.thin() #alerts "yo"
x.fat() #alerts "yo"
fn = (callback) -> callback()
fn(x.thin) #alerts "undefined"
fn(x.fat) #alerts "yo"
<b> Funções de seta EcmaScript 6 </b>
As funções de seta que foram propostas para o ES6, fornecem os mesmos dois recursos das funções de seta grande no CoffeeScript: escopo léxico <i> this </i> e sintaxe mais limpa ao definir uma função anônima. Neste estágio, as funções de seta são implementadas apenas no Firefox 22, verifique aqui a compatibilidade do navegador
<b> Sintaxe da função anônima ES5 </b>
var x = [0,1,2];
x.map(function (x) {
console.log(x * x);
});
<b> Função de seta ES6 </b>
let x = [0,1,2];
x.map(x => console.log(x * x));
<b> Objeto de função com método anônimo </b>
function Person() {
var self = this;
self.age = 0;
setInterval(function growUp() {
self.age++;
}, 1000);
}
<b> Objeto de função com método de função de seta </b>
function Person(){
this.age = 0;
setInterval(() => {
// this is lexically scoped
this.age++;
}, 1000);
}
Para mais informações e exemplos sobre as funções das setas, verifique o Mozilla