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

Avatar for Ana Luiza Portello

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.