Functions

  • Declaração

function myFunction() {
  console.log("Hello World!")
}
  • Funções anônimas

let nome = (nome) => nome
let nome = (nome) => {
  return nome
}
  • args

function myFunction(...args) {
  console.log(...args)
}

myFunction('teste')
  • Closure

function minhaBiblioteca() {
    return {

        add5() {
            return 10 + 5;
        },
        add7() {
            return 10 + 7;
        }
    }
}

const meuNumero = minhaBiblioteca();

console.log(meuNumero.add5());
console.log(meuNumero.add7());
  • Currying

Currying é o processo de transformar uma função que espera vários argumentos em uma função que espera um único argumento e retorna outra função curried.

// const add = num1 => num2 => num1 + num2 (forma simplificada)

const add = (num1) => {
    return (num2) => {
        return num1 + num2
    }
}

console.log(add(5)(5))

Com curried function

// const darDesconto = desconto => preco => preco * desconto (forma simplificada)

const darDesconto = (desconto) => {
    return (preco) => {
        return preco * desconto
    }
}

const darDezPorcentoDesnto = darDesconto(.10)

console.log(darDezPorcentoDesnto(50));
  • Higher Order Functions

function dobro(numero) {
    return numero * 2
}

function triplo(numero) {
    return numero * 3
}

function quadruplo(numero) {
    return numero * 4
}

console.log(dobro(9))

Utilizando higher order function

function multiplicador(multiplicador) {
    return function(numero) {
        return numero * multiplicador
    }
}

const dobro = multiplicador(2)
const triplo  = multiplicador(3)
const quadruplo  = multiplicador(4)

console.log(dobro(3))
  • Arrow Functions

Antes

const myFunction = function () {
    return 'hello world!';
}

Com arrow function

const myFunction = () => {
    return 'hello world!';
}

// ou

const myFunction = () => 'hello world!'
  • Spread Operator

const arr = [1, 2, 3]
const newArr = [...arr, 4]

console.log(newArr); // [ 1, 2, 3, 4 ]

Last updated