, 16 tweets, 5 min read Read on Twitter
Hoje, falarei sobre um conceito de Programação Funcional que algumas pessoas dizem ser complicado, mas você perceberá que não é:

🔥 Closures 🔥

Vem comigo na mini-thread! 👇
Para entender Closures, você precisa entender como funciona o Escopo Léxico do JavaScript.

Vamos aos exemplos =D

Observe o código à seguir:
O que você deve saber sobre esse código é:

🔹 A invocação de `init()` cria uma constante local `message` e uma função `showMessage`.
🔹 A função `showMessage` é uma função interna, uma closure definida dentro de `init`, e só está disponível dentro do bloco da função `init`:
Perceba também que a função `showMessage` 👉não👈 possui constantes ou variáveis locais. Ou seja, nenhuma variável ou constante foi *criada* dentro dela.
Só que, como a função `showMessage` tem acesso à const `message`, que está declarada em um escopo externo à ela, a invocação de `showMessage` consegue acessar o valor de `message`, mesmo que ela tenha sido declarada no escopo de outra função (`init`):
Tudo bem até aqui?

Observe novamente o código abaixo:
Observe que dessa vez, a função externa `makeFunction` apenas retornou a função interna `showMessage`, sem executá-la.

`makeFunction`, quando executada retorna, pra dentro de `myFunction`, a referência da função `showMessage`:
Quando `myFunction` (que contém `showMessage`) é executada, o valor da const `message` ainda é lembrado:
Isso acontece por que em JavaScript, cada função é uma closure.

Uma Closure é a combinação de uma função e o escopo léxico no qual essa função foi declarada.

Ou seja, uma closure carrega consigo qualquer var/let/const que está no mesmo escopo em que ela foi declarada:
Recaptulando:
Nessa thread, meu objetivo foi te mostrar que entender uma closure não é complicado.

Se "o que é uma closure" ainda não clicou pra você, não se preocupe. Me dê o toque e eu explicarei pra você de outra forma =)
Lembrando também que essa é apenas a 1ª parte da série, vem mais por aí =D
Acha que esse conteúdo pode ajudar + pessoas❓

👉Retweeta👈 essa thread!

Para facilitar, linkei ela ali em baixo =)

Te vejo na próxima 🔥
Threads sobre Programação Funcional que você também pode gostar:

🔗Higher Order Functions:


🔗Explorando Funções Puras:
🔗Introdução à Programação Funcional:


🔗Introdução à Programação Funcional - Parte 02:
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Roger Melo 💻
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!