Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javascript Funcional - Front End Campinas

Javascript Funcional - Front End Campinas

Palestra feita no Castelo Creative Space

Ana Luiza Portello

July 27, 2017
Tweet

More Decks by Ana Luiza Portello

Other Decks in Programming

Transcript

  1. 1 2 2 4 3 6 4 8 Domínio Imagem

    x y=f(x) É uma função
  2. 1 2 2 4 3 6 4 8 Domínio Imagem

    x y=f(x) NÃO é uma função
  3. 1 2 2 4 3 6 4 Domínio Imagem x

    y=f(x) NÃO é uma função
  4. Funções Puras Sempre recebem algo. Sempre retornam algo. Nunca mutam

    coisas fora do escopo da própria função. Para o mesmo input sempre retornam o mesmo output.
  5. let taxa = 10 // variáveis globais são do mal

    function mudarTaxa() { return taxa * 0.1 }
  6. const person = { name: 'Ana', age: 21 } const

    newPerson = person newPerson.age = 22 console.log(newPerson === person) // true console.log(person) // { name: 'John', age: 30 }
  7. const add = function (x) { return x + 1

    } const doubleAndAdd = function (x) { return add(x) * 2 }
  8. for function add(arr) { let results = [] for(let i

    = 0; i < arr.length; i++) { results.push(arr[i] + 1) } } <- Muta o array <- Muta o i
  9. Map const add = x => x + 1 const

    arr = [1, 2 ,3] const res = arr.map(add) //[2, 3, 4]
  10. filter const isEven = x => x % 2 ==

    0 ? true : false const arr = [1, 2 ,3] const res = arr.filter(isEven) // [2]
  11. reduce 1 2 3 sum(x) 6 const sum = (sum,

    value) => sum + value [1, 2, 3].reduce(sum)
  12. reduce 1 2 3 sum(x) 7 const sum = (sum,

    value) => sum + value [1, 2, 3].reduce(sum, 1)
  13. reduce const matrix = [ [0, 1], [2, 3], [4,

    5] ] const flatten = (arr, value) => arr.concat(value) const flattened = matrix .reduce(flatten, []) // [0, 1, 2, 3, 4, 5]
  14. MAP FILTER REDUCE food = [ ] (food, fry) =>

    [ , , ] (food, isVeggie) => [ ] (food, eat) =>
  15. supondo que eu quero a soma dos valores + taxa

    de 10% que são maiores que 500.
  16. let results = [] for (let i = 0; i

    < arr.length; i++) { withTax = arr[i] * 0.1 if (withTax > 500) { results.push(arr[i]) } } let sum = 0 for (let i = 0; i < results.length; i++) { sum += results[i] return results }
  17. arr .map(res => res * 0.1) .filter(res => res >

    500) .reduce((acc, res) => acc + res, 0)
  18. const add = x => y => x + y

    const add10 = add(10) // função const add10(5) // 15
  19. Js não garante imutabilidade. Não 100% é puro. PRÓS CONTRAS

    Mais testabilidade. Reduz erros e bugs. Mais legível. Lida melhor com o estado da sua aplicação.