Introdução ao JavaScript

O que é JavaScript ?

JavaScript é uma linguagem de programação que permite manipular e implementar elementos em páginas web. Como por exemplo uma lista dinâmicas de itens.

Para melhor compreensão, três linguagens compõem uma página web:

  • HTML: Linguagem de marcação usada para estruturar as páginas assim dando contexto a elas. Elementos como tabelas, parágrafos, imagens e entre outros elementos dentro da página.
  • CSS: Linguagem de estilo, ou regras de estilo. Aqui definimos o estilo de cada elemento na nossa página. Por exemplo alterar a cor de fundo, mudar a fonte de um paragrafo.
  • JavaScript: Linguagem de programação que permite controlar ou criar conteúdos totalmente dinâmicos.

Manipulando elementos

Para melhor exemplificar, veja o exemplo abaixo onde foi criado um parágrafo contendo um nome.

<p id="nome">FrontMaster</p>

Logo mais criamos uma constante para armazenamos aquele elemento cujo o id é nome.

const nome = document.getElementById("nome").

Após isso temos uma gama de possibilidades, desde alterar a cor da fonte, como alterar a tamanho fonte.

nome.style.color = "red";
nome.style.fontSize = "35px";

Temos a possibilidade também de alterar o HTML desse elemento

nome.innerHTML = 'Olá mundo';

E seguindo a mesma logica de poder alterar os elementos HTML também podemos oculta-los e mostra-los.

nome.style.display = "block";
nome.style.display = "none";

Sintaxe e declarações

O JavaScript é case-sensitive, por exemplo a variavel nome é diferente de Nome.

let nome;
let Nome;

As instruções são chamadas de declaração e tem como por separação o ponto e virgula (;).
Segundo a MDN : O código fonte dos scripts em JavaScript são lidos da esquerda para a direita e são convertidos em uma sequência de elementos de entrada como simbolos, caracteres de controle, terminadores de linha, comentários ou espaço em branco. 

Existem três tipos de declarações em JavaScript.

  • var: Declara uma variável global ou local, pode-se adicionar uma valor inicial.
  • let: Declara uma variável local de escopo do bloco, pode-se adicionar uma valor inicial.
  • const: Declara uma constante de escopo de bloco, apenas de leitura.

Var

Quando usamos o var para declarar uma variável fora de uma função temos o nome de escopo global, já quando utilizamos ela dentro de uma função ela é um variável de escopo local. Conseguimos ler uma variável dentro de uma função que declaramos em um escopo global, porém não conseguimos ler a variável que declaramos dentro de uma função fora dela. Veja o exemplo abaixo:

var global = "escopo global";
   
function newFunction() {
  var local = "escopo local";
}

console.log(global)
console.log(local) // erro: local não está definido

Quando utilizamos o var podemos redeclarar uma variável com valor diferente

var global = "escopo global";
var global = "escopo global novamente";

Hosting

O Javascript tem um mecanismo chamado Hosting que coloca todas as declarações de funções e variáveis na parte superior do escopo antes que o código execute. Veja uma exemplo abaixo:

console.log(global);
var global = "escopo global";

Após o hosting será interpretado dessa forma:

var global;
console.log(global); //global is undefined
global = "escopo global";

As variáveis var foram para o topo e assim ficaram undefined;

Var e seus problemas

Pelo fato de o var deixar a redeclaração de variáveis pode ocorrer problemas caso você possua a mesma nomenclatura em varias partes do código gerando assim problema muito maior. Veja o exemplo abaixo:

var valor = "valor 10";
var hora = 10;

if (hora > 5) {
  var valor = "valor maior"; 
}
    
console.log(valor) // o resultado será "valor maior"

Se você já usou a variável valor em outras partes do código, o valor será sobrescrito. Isso provavelmente causará vários problemas no seu código. Então temos o let e const.

Let

O let é uma melhoria do var. Com ele não temos o problema de redeclaração de variável. Veja o exemplo abaixo:

let valor = "valor 10";
let hora = 10;

if (hora > 5) {
  let novoValor = "valor maior"; 
  console.log(novoValor); //output: "valor maior" 
}
    
console.log(novoValor); // Informará que a variável não está definida

O let pode ser atualizado, mas não pode ser declarado novamente.

let valor = "escopo global";
let valor = "escopo global novamente"; //Informara o erro de que "valor" já foi declarado

Porém se a declaração estiver em escopos diferentes não terá problema algum. Veja o exemplo abaixo:

let valor = "valor 10";
let hora = 10;

if (hora > 5) {
  let valor = "valor maior"; 
  console.log(valor); //output: "valor maior" 
}
    
console.log(valor); // output: "valor 10"

Veja que ele retorna o mesmo valor baseado no seu escopo atual. Já que estão em escopos diferentes, são tratadas como variáreis diferentes.

O let também sofrem com o hosting a diferença com o var é que se variável for usada antes de ser declarada o erro de Reference Error será mostrado.

Const

O const ele não pode ter seu valor alterado nem pode ser declarado novamente. Já que as variáveis const mantém seu valor constante. Assim como o let seu valor poderá ser acessado apenas dentro do seu escopo onde foram declaradas.

Você deve atribuir o valor da const no momento da sua declaração.

Você não pode alterar o valor de const porque isso gera erros de código; você pode alterar suas propriedades sem problemas, no contexto em que estamos trabalhando com objetos declarados const.

const aluno = {
  idade: 28,
  nome: "João"
}

A maneira correta de atualizar sua propriedade é:

aluno.idade = 25;
aluno.nome = "Jonh Doe";

Assim como o let e o var, o hosting afeta a const. Mas não é inicializada.

Referência: MDN Web docs, Freecodecamp