1
resposta

Dúvida sobre ESCOPOS em JavaScript!

Boa noite a todos!

Estudando sobre a questão dos escopos em JavaScript, li em dois artigos, informações contraditórias e gostaria de saber qual é a versão correta sobre o tema. Enquanto um dos artigos afirma o seguinte:

"É bom ressaltar que no JavaScript blocos de instruções como IF, FOR, WHILE etc. não criam seu próprio escopo como acontece em outros linguagem de programação que são semelhantes ao C, de forma como já foi dito anteriormente que no JavaScript somente existem dois tipos de escopos, que são eles escopo global e escopo local." **

Já o segundo artigo me forneceu outra info:

Anteriormente falamos do escopo criado por funções, mas esta não é a única forma de criarmos um escopo no JS. Todo o tipo de bloco cria um novo escopo, e por bloco queremos dizer qualquer estrutura que utilize chaves, como if, for, while e outras, por exemplo:

Afinal, há os chamados escopos de bloco no Js?

1 resposta

Bom dia, Ednirli!

"Escopo de variável Quando você declara uma váriavel fora de qualquer função, ela é chamada de variável global, porque está disponível para qualquer outro código no documento atual. Quando você declara uma variável dentro de uma função, é chamada de variável local, pois ela está disponível somente dentro dessa função.

"JavaScript antes do ECMAScript 6 não possuía escopo de declaração de bloco; pelo contrário, uma variável declarada dentro de um bloco de uma função é uma variável local (ou contexto global) do bloco que está inserido a função. Por exemplo o código a seguir exibirá 5, porque o escopo de x está na função (ou contexto global) no qual x é declarado, não o bloco, que neste caso é a declaração if. "

Ou seja, provavelmente esses dois artigos que você leu são de épocas diferentes. Pois antes, realmente não havia escopo em declaração de bloco, que só foi implementado a partir do ECMAScript 6.

Fonte: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Grammar_and_types