1) O que é uma instrução JavaScript?
2) Quais são as palavras chave do JavaScript usadas para declarar
variáveis?
3) Quais são as formas de saída do JavaScript?
4) Qual a diferença em escopo global e escopo local?
Soluções para a tarefa
Resposta:
1) O que é uma instrução JavaScript?
é a linguagem de programação usada para adicionar interatividade ao seu site (por exemplo: jogos, respostas quando botões são pressionados ou dados são inseridos em formulários, estilo dinâmico, animações).
2) Quais são as palavras chave do JavaScript usadas para declarar variáveis?
Em Javascript existem três tipos de variáveis, mas por enquanto veremos somente dois:
- var
- let
3) Quais são as formas de saída do JavaScript?
4) Qual a diferença em escopo global e escopo local?
Quando nos referimos a escopo de variável estamos se referindo a qual local de nosso código uma determinada variável pode ser acessada. No JavaScript existem somente dois tipos de escopos, que são eles, escopo global e local. O código a seguir ilustra basicamente como funcionam esses dois escopos.
Declarando variáveis no escopo global
Uma variável global é definida quando declaramos uma variável fora de qualquer função, assim ela torna acessível a qualquer parte da nossa aplicação ou site, podendo ser lida e alterada. Agora vejamos um simples exemplo de como podemos declarar uma variável global:
Como podemos ver no exemplo anterior foi declarado uma variável global chamada myName, onde ela está acessível a qualquer parte desse código, de tal forma, como podemos observar seu acesso e alteração dentro da função showName.
Declarando variáveis no escopo local
Uma variável se torna local quando ela é declarada dentro de uma função, de tal maneira a qual ela somente estará acessível dentro dessa função. Podemos ver um exemplo a seguir da declaração de uma variável local:
Como podemos ver no exemplo acima o escopo local se delimita a chave de abertura e fechamento da função showName, onde no exemplo acima está destacado pelo retângulo amarelo. Ao executamos esse script um erro será mostrando, onde a variável myLastName está sendo usada fora do escopo da função showName, isso porque ela não existe fora do escopo dessa função.
Caso existam sub-funções dentro de uma função pai, todas as sub-funções também terão acesso a todas as variáveis declaradas dentro da função pai. Assim como podemos ver no exemplo a seguir:
Declarando variáveis sem o uso de var
Ao declaramos uma variável sem o uso da palavra reservada var estaremos criamos uma variável global implicitamente, e automaticamente ela se torna global independente de onde ela for definida, assim também se tornando uma propriedade do objeto window do navegador ou do objeto global se estivemos utilizando o nodejs.
Vejamos um exemplo onde será definida uma variável dentro do escopo de uma função, porém sem o uso da palavra reservada var, assim essa variável se tornará uma variável global, podendo ser acessada em qualquer parte do código:
Minimizando a utilização de variáveis com escopo global
Quando desenvolvemos aplicações ou sites em JavaScript é um boa pratica que sempre evitamos ou minimizamos ao máximo a utilização de variáveis globais, pois sua utilização pode acarretar em possíveis problemas em nosso código.
Pois, como já foi dito anteriormente quando criamos uma variável global, essa variável fica acessível em todo nosso código, e o principal problema nisso é que isso pode acarretar em problemas de colisão de nomes em nossos scripts, e dificulta na modularização. Vejamos um exemplo onde um erro ocorre:
O exemplo anterior é um exemplo simples, porém podemos perceber como a utilização de variáveis globais pode ocasionar erros, onde nesse exemplo a função formatName que apenas deveria formatar um nome e retorna-lo, está alterando a variável global myName, assim fazendo com que na linha 16 ao invés de mostrar um nome mostre outro, como podemos ver em sua saída:
JOÃO
JOÃO
Evitar a utilização de variáveis globais nem sempre é possível, então uma solução para que possamos evitar ou diminuir a chances de erros, é criamos um objeto global ao invés de variáveis. Assim todas as variáveis que precisamos criar de forma global nós as colocaremos nesse objeto. Um exemplo seria o seguinte:
Blocos no JavaScript não têm escopo
É 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.
Por isso, por questão de boa pratica, sempre tentem evitar a criação de variáveis dentro de blocos, pois isso pode causar comportamentos indesejáveis, os quais na maioria das vezes podem ficar difíceis de serem identificados, caso você não tenha pleno conhecimento da utilização de escopo no JavaScript. Como por exemplo:
No exemplo anterior podemos perceber como uma variável criada dentro do escopo de bloco também existirá fora do mesmo, e muitas vezes isso não é o comportamento que esperamos, estão sempre é bom evitar declaração dentro de blocos de código.
Explicação: