[Música] fala Mestres beleza no vídeo de hoje nós vamos estar falando aqui sobre os escopos de variáveis quando a gente tá trabalhando não só com funções mas também isso vai valer pros blocos sempre que a gente tiver blocos de código né Ou seja no IF e ifelse né o sut ou alguns outros operadores que nós temos aí Que Nós criamos e principalmente também nas funções né Eh a gente vai ter que trabalhar sempre com esses escopos E tem também que ter muito cuidado relacionado a isso tá então já aqui no vs code eu tô com
com um exemplo né Eu já escrevi aqui um exemplo da nossa função saudação eh aqui ela tá sem parâmetro então basicamente eu tenho um caso aqui de conflito de variáveis né no conflito no escopo global e antes da a gente executar isso aqui e ver os problemas eh eu tenho que esclarecer essa questão de Esopo Tá o que que é o escopo Global né se a gente pensar aqui no arquivo JavaScript como o o o que vai ser executado né quando eu crio essas variáveis n quando eu declaro a variável fora de alguma função fora
de algum if else né Eu estou declarando uma variável Global tá então toda função que eu criar aqui toda condição que eu tiver aqui todo verificação que eu for fazer dentro do meu programa essa variável ela vai estar definida nesse escopo Global ela pode ser acessada por todas essas funções essas coisas que eu irei criar então isso é o escopo Global o escopo local ele é um escopo dentro de algum desses blocos tá então aqui dentro da função saudação eu tenho essa variável nome que eu defini como Maria Então essa variável nome ela está com
o escopo local e essa outra variável nome que eu que eu chamei de João aqui essa outra variável ela está com escopo Global E aí o problema disso o problema o perigo que nós temos quando a gente tem essa essa definição de escopo é conflitos de nomes né porque a variável Global ela pode ser acessada por funções ela pode ser acessada de alguém que tá com scopo fechado né então o bloco da função um bloco do IF né Um bloco do else esse nesses locais eu consigo acessar a variável Global agora se eu troco o
o caso aí pro escopo local né como o nome já diz que ele é local se eu declara uma função uma variável dentro de uma função essa variável Só existe no escopo daquela função né daquele bloco que foi definido então o escopo Global ele é acessado por todo mundo já o escopo local ele é só acessado do bloco que ele está que ele que ele pertence né que ele foi declarado então se eu executar esse meu arquivo aqui nós temos o seguinte esse Olá Maria né que é o que o que o que está tornando
a função saudação Então essa função saudação é o retorno dela eu coloco dentro do console log e logo depois eu faço console log do da variável nome tá e a variável nome ela tá com valor igual a João que é a minha variável com escopo Global então o problema disso aqui é que eu às vezes eu posso me confundir né Com qual variável é qual pensar que eu estou Man Pando a variável nome aqui dentro de saudação e e eu realmente estarei né só que eu posso pensar que na verdade não esse nome ele é
a variável Global porque os nomes são iguais a gente pode se confundir e confundindo isso eu posso pensar que eu estou fazendo uma coisa e quando na verdade eu não estou tá então e nós corremos sempre esse risco de conflitos de variáveis então eu posso ter um outro exemplo que seria o seguinte eu vou comentar isso aqui a execução né de saudação vou pegar a mesma função saudação Vou declarar ela aqui embaixo Só que nesse caso eu vou fazer o seguinte eu vou chamar de saudação saudação 2 para né não ter conflito de nome da
função e aqui na saudação 2 eu vou criar essa variável chamar ela de nome local nome local e aqui eu vou retornar Olá nome local e vou chamar aqui ó console log saudação 2 vou Executar a função e vou dar um console log aqui também da variável nome local pra gente provar que as variáveis locais elas só são acessadas de dentro do bloco que ela pertence né então se eu executar isso aqui nós temos um erro que nome local não está definido e por que que ele não está definido porque né o escopo da variável
abrange só o bloco da função saudação do então se eu mover esse console log aqui para dentro do da minha função eu posso mover aqui esse atalho é Alt e a gente usa a setinha né para subir e descer a linha mover a linha inteira né se eu faço essa esse se eu movo essa linha e executo Agora sim ó conso log Maria que é o nome local e depois eu retorno né o Olá Maria e faço consol log aqui abaixo tá então as variáveis locais novamente Deixa eu só voltar para cá a variável local
ela só vai existir no escopo que ela foi declarada tá então um outro exemplo que a gente pode ter aqui que na verdade vai funcionar da mesma forma só que eu posso fazer isso aqui para demonstrar para vocês é que no IF else também né o bloco ali do IF else ou seja se dentro do IF eu declarar uma variável essa variável só vai existir dentro do IF né Se dentro da função eu declarar outra função aquela função só vai existir dentro da função que eu declarei tá então esse o o que a gente fala
de escopo de variável ele vale paraa variável mas também vai valer paraa função eh vai valer mais paraa frente quando a gente tiver trabalhando com classe na verdade a classe A gente não vai ter isso né que eu não consigo declarar uma classe dentro da outra mas no caso de funções e variáveis eh a gente tem sempre que esse preocupação com o escopo né se tá no escopo correto ele só vai existir dentro daquele escopo se tá dentro se eu estou declarando dentro de um bloco só vai existir dentro daquele bloco tá e o que
a gente pode fazer para evitar Isso é realmente ser mais descritivo nos nomes né tentar evitar ao máximo tentar descrever ao máximo né O que é aquilo para evitar que a gente tenha eh alguma outra variável com o mesmo nome em algum local e que possa est causando ess essa esse problema Esse conflito aí de nomes tá então quando a gente começa a descrever melhor as coisas a gente tende a não ter problema com com os conflitos né os conflitos tendem a ser reduzidos tá então basicamente é isso o a ideia de fato para reduzir
esses conflitos é tentar descrever ao máximo e também né que eu lembrei aqui agora é a gente tentar trabalhar ao máximo com os escopos locais tá então se eu quero fazer uma coisa muito específica dentro daquela função se eu tenho que declarar alguma coisa eu declaro eh no caso das variáveis dentro da função e enfim eu eu eu poderia ficar dando exemplo aqui de algumas coisas mas vai ficar muito abstrato para vocês né é o tipo de coisa o tipo de problema que a gente acaba tendo eh em um caso muito específico e quando acontece
a gente lembra de fato porque né É É um não não tem não tem o caso onde o conflito funcione né se tá em conflito vai dar algum problema a gente vai perceber esse problema e vai remol tá então é isso tá para essa aula é isso eu espero que eu tenha ajudado qualquer dúvida pode estar deixando um comentário logo abaixo e é isso aí muito obrigado e até a [Música] próxima n