<commit_before># Artigo
**autor**: ravenNNN - <NAME>

## Hoisting

Em JavaScript antes do nosso código ser executado,
ele é lido por inteiro. Nessa hora, todas nossas variáveis,
e funções são içadas até o topo do nosso escopo;
só então a execução de fato acontece.
Isso é o que chamamos de Hoisting.

Explicando melhor:

Sempre que criamos uma variável, ela é içada para o topo do nosso escopo,
antes mesmo do nosso código ser executado, ou seja,
ele não chega a receber nenhum valor nessa fase, permanecendo indefinida.

```
    valor = 666;
    var valor;

    // Como nossas variáveis são içadas antes da execução do código
    // Ela será interpretada assim

    var valor;
    valor = 666;
```

Já com funções, é um pouco diferente,
não é somente o nome que é içado; neste caso,
todo corpo de nossa função é levado para o topo do nosso escopo.

No caso das expressões, ela vai se comportar como as variáveis,
tendo somente seu nome içado.

```
    coisada(); // vai printar "mensagem coisada"
               // Porque ali em baixo eu vou criar a função

    function coisada() {
      console.log("mensagem coisada");
    }

    // Como nas funções, são içadas o corpo e não somente o nome
    // Eu posso chamar ela em qualquer lugar do código
    // Mesmo não fazendo nenhum sentido aparente.
```



## Closure

O que é?

Porquê acontece e como usar?

Situações que você usaria:

## Variável Global

Como se usa uma variável Global dentro de uma função?

## Variável por parâmetro
<commit_msg>Artigo sobre hoisting pronto<commit_after># Artigo
**autor**: ravenNNN - <NAME>

## Hoisting

Em JavaScript antes do nosso código ser executado,
ele é lido por inteiro. Nessa hora, todas nossas variáveis,
e funções são içadas até o topo do nosso escopo;
só então a execução de fato acontece.
Isso é o que chamamos de Hoisting.

Explicando melhor:

Sempre que criamos uma variável, ela é içada para o topo do nosso escopo,
antes mesmo do nosso código ser executado, ou seja,
ele não chega a receber nenhum valor nessa fase, permanecendo indefinida.

```
    valor = 666;
    var valor;

    // Como nossas variáveis são içadas antes da execução do código
    // Ela será interpretada assim

    var valor; // undefined
    valor = 666;

```

Já com funções, é um pouco diferente,
não é somente o nome que é içado; neste caso,
todo corpo de nossa função é levado para o topo do nosso escopo.

No caso das expressões, ela vai se comportar como as variáveis,
tendo somente seu nome içado.

```
    coisada(); // vai printar "mensagem coisada"
               // Porque ali em baixo eu vou criar a função

    function coisada() {
      console.log("mensagem coisada");
    }

    // Como nas funções, são içadas o corpo e não somente o nome
    // Eu posso chamar ela em qualquer lugar do código
    // Mesmo não fazendo nenhum sentido aparente.

```



## Closure

O que é?

Porquê acontece e como usar?

Situações que você usaria:

## Variável Global

Como se usa uma variável Global dentro de uma função?

## Variável por parâmetro

{'fraction_non_alphanumeric': 0.06336633663366337, 'fraction_numerical': 0.0039603960396039604, 'mean_word_length': 3.174931129476584, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4324101', 'n_tokens_mistral': 1135, 'n_tokens_neox': 1050, 'n_words': 454}