Plinio Balduino: JavaScript Funcional

10
JavaScript Funcional Em sete minutos 7 masters ‑ 25/09/2013 Plínio Balduino / @p_balduino

description

7Masters JavaScript | Plínio Balduino

Transcript of Plinio Balduino: JavaScript Funcional

Page 1: Plinio Balduino: JavaScript Funcional

JavaScriptFuncionalEm sete minutos

7 masters ‑ 25/09/2013Plínio Balduino / @p_balduino

Page 2: Plinio Balduino: JavaScript Funcional

Programação FuncionalJavaScript é funcional

Ok, quase

Page 3: Plinio Balduino: JavaScript Funcional

High Order FunctionFunções como ʺcidadão de primeira

classeʺFunção é um valor

Page 4: Plinio Balduino: JavaScript Funcional

High Order FunctionFunções como ʺcidadão de primeira

classeʺfunction g() { }

var f = function() { }

Page 5: Plinio Balduino: JavaScript Funcional

High Order FunctionUma função recebe outra função

como parâmetrofunction soma(x, y) { return x + y;}function multiplicacao(x, y) { return x + y;}function calcula(op, x, y) { return op(x, y);}calcula(soma, 2, 3); // 5calcula(multiplicacao, 2, 3); // 6

Page 6: Plinio Balduino: JavaScript Funcional

High Order FunctionUma função devolve outra função

como resultadofunction adder(x) { return function(y) { return x + y; }}

var add5 = adder(5);

add5(10); // 15

Page 7: Plinio Balduino: JavaScript Funcional

ClosureEscopo e contexto

function saudacao(mensagem) { return function(nome) { alert(mensagem + ", " + nome); }}

var bomDia = saudacao("Bom dia");

bomDia("iMasters");

bomDia("Biu Goiaba");

Page 8: Plinio Balduino: JavaScript Funcional

PartialFunção que não roda sozinha

function saudacao(mensagem) { return function(nome) { alert(mensagem + ", " + nome); }}

var bomDia = saudacao("Bom dia");

bomDia("iMasters");

bomDia("Biu Goiaba");

Page 9: Plinio Balduino: JavaScript Funcional

Mais recursosUsando underscore.js

_.map([1, 2, 3], add5); // [6, 7, 8]

_.reduce([1, 2, 3, 4], soma); // 10

function par(x) {return x % 2 == 0};

_.filter([1, 2, 3, 4, 5], par); // [2, 4]

Page 10: Plinio Balduino: JavaScript Funcional

Obrigado