2.1 Variáveis em JavaScript
JavaScript é uma linguagem de programação flexível e dinâmica, que suporta diferentes formas de declarar variáveis e trabalhar com tipos de dados. Nesta aula, vamos ver três principais formas de declarar variáveis (var, let, const) e os principais tipos de dados primitivos em JavaScript.
Variáveis em JavaScript
JavaScript é uma linguagem com tipagem dinâmica. As variáveis nele não têm tipo. Qualquer variável pode receber qualquer valor a qualquer momento (mas tem umas nuances).
Para criar uma variável, é preciso escrever uma construção assim:
var name;
Você pode imediatamente atribuir um valor à variável:
var name = value;
Mas na verdade, em JavaScript existem 3 modos diferentes de criar variáveis. Vamos falar mais sobre eles agora.
Operador var
Variáveis declaradas com var têm escopo funcional ou global. Elas estão sujeitas ao "hoisting", o que significa que sua declaração é movida para o topo do escopo durante a execução do código.
Exemplo:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
Neste exemplo, a variável x é elevada ao começo do seu escopo, então o primeiro console.log imprime undefined.
Em outras palavras, o "hoisting" transforma nosso código nisso:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
Operador let
Os desenvolvedores queriam muito mudar o comportamento do operador var, mas tinham medo de quebrar milhões de linhas de código já escritas. Por isso, eles simplesmente inventaram outro operador, que também cria variáveis, mas com um comportamento um pouco diferente.
Variáveis declaradas com let têm escopo de bloco. Isso significa que elas estão acessíveis apenas dentro do bloco de código (normalmente entre chaves {}) no qual foram declaradas. let não é sujeito ao hoisting da mesma forma que var.
Exemplo:
A variável y existe apenas dentro do bloco if.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
Operador const
Variáveis declaradas com const também têm escopo de bloco e não podem ser reatribuídas após sua inicialização. No entanto, isso não torna os objetos declarados com const imutáveis — suas propriedades podem ser alteradas.
Ou seja, a variável não pode mudar, mas o objeto a que ela se refere sim. Queriam fazer o melhor, mas saiu como sempre.
Exemplo:
Neste exemplo, a constante x não pode ser reatribuída, mas o objeto obj pode ser alterado.
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // Isso é permitido
console.log(obj.name); // Bob
2.2 Tipos de dados primitivos
JavaScript suporta vários tipos de dados primitivos, que representam valores simples, não sendo objetos complexos.
Tipo Number
Representa quaisquer valores numéricos, incluindo números inteiros e de ponto flutuante.
Exemplos:
let num = 42;
let pi = 3.14;
Tipo String
Representa dados textuais: strings, caracteres, emojis. Tudo que parece com texto — é aqui.
Exemplos:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
Tipo Boolean
Representa valores lógicos true ou false.
let isTrue = true;
let isFalse = false;
Tipo Null
Representa ausência intencional de valor.
let empty = null;
Se o tipo consiste em um único valor, que significa ausência de valor, talvez ele seja mais um valor único do que um tipo único, não é?
Tipo Undefined
Representa o valor de uma variável que foi declarada, mas não inicializada.
let notAssigned;
console.log(notAssigned); // undefined
2.3 Comparando var, let, e const
Vamos dar uma olhada final nas diferenças entre nossos três métodos de criar variáveis:
| Característica | var | let | const |
|---|---|---|---|
| Escopo | Funcional ou global | De bloco | De bloco |
| Variação (Hoisting) | Sim, mas a inicialização não é afetada | Não | Não |
| Reatribuição | Sim | Sim | Não |
| Inicialização | Opcional | Opcional | Obrigatória |
JavaScript oferece vários métodos de declaração de variáveis, cada um com suas peculiaridades e aplicabilidade dependendo do contexto. var é menos usado por causa de suas características de hoisting e escopo global. let e const são preferidos em JavaScript moderno por causa do seu escopo de bloco e controle sobre reatribuição.
Os tipos de dados primitivos permitem trabalhar com estruturas de dados básicas, fornecendo a funcionalidade básica necessária para criar aplicativos complexos. E isso é o que torna JavaScript a linguagem mais popular do mundo :)
GO TO FULL VERSION