Introdução ao JavaScript
JavaScript é uma linguagem de programação interpretada, amplamente utilizada para renderização dinâmica de páginas web nos navegadores. Diferente de linguagens como Python, sua sintaxe é mais flexível e menos rigorosa em termos de tipagem.
Sintaxe Básica
Comentários
// Comentário de uma única linha
/*
Comentário de múltiplas linhas
semelhante ao CSS
*/
Inclusão de Scripts na Página
// 1. Dentro da tag <head> usando <script>
<script>
console.log("Olá, mundo!");
</script>
// 2. Link externo no <head>
<script src="app.js"></script>
// 3. Link externo no final do <body> (recomendado)
<script src="app.js"></script>
Como o carregamento da página ocorre de cima para baixo, scripts que manipulam elementos HTML devem ser incluídos após os mesmos serem renderizados.
Terminação de Instruções
Em JavaScript, recomenda-se o uso do ponto e vírgula (;) para finalizar declarações.
Variáveis e Constantes
Declaração de Variáveis
Utilizam-se as palavras-chave var ou let (esta última introduzida no ES6). A diferença principal está no escopo:
- var: escopo global ou de função, permitindo redeclaração
- let: escopo de bloco, evitando vazamento para o escopo externo
var contador = 10;
let nomeUsuario = "Maria";
Constantes
Valores imutáveis são definidos com const:
const PI = 3.14159;
Tipos de Dados
Verificação de Tipo
let valor = 42;
console.log(typeof valor); // "number"
Number
Ambos inteiros e decimais pertencem ao tipo Number. O valor especial NaN (Not a Number) também é deste tipo.
String
Podem ser definidas com aspas simples, duplas ou crases (template literals):
let frase = 'Olá';
let outra = "Mundo";
let multi = `Linha 1
Linha 2`;
Métodos de String
let texto = " Programação Web ";
texto.length; // 18
texto.trim(); // "Programação Web"
texto.charAt(3); // "o"
texto.indexOf("Web"); // 15
texto.substring(2, 7); // "Progr"
texto.slice(-5, -1); // " Web"
texto.toUpperCase(); // " PROGRAMAÇÃO WEB "
texto.toLowerCase(); // " programação web "
texto.split(" "); // ["", "", "Programação", "Web", "", ""]
Boolean
Valores booleanos são true ou false (minúsculos). Valores como 0, "", null, undefined e NaN são considerados falsos.
null e undefined
- null: representa ausência intencional de valor
- undefined: indica que uma variável foi declarada mas não inicializada
Estruturas de Dados
Arrays
let lista = [10, 20, 30, 40];
lista.push(50); // [10, 20, 30, 40, 50]
lista.pop(); // remove 50
lista.unshift(5); // [5, 10, 20, 30, 40]
lista.shift(); // remove 5
lista.slice(1, 3); // [20, 30]
lista.reverse(); // [40, 30, 20, 10]
lista.join("-"); // "40-30-20-10"
lista.concat([50, 60]); // [40, 30, 20, 10, 50, 60]
lista.sort((a, b) => a - b); // ordenação numérica
let dobrados = lista.map(n => n * 2);
lista.forEach((item, index) => {
console.log(`${index}: ${item}`);
});
Objetos
let pessoa = {
nome: "Carlos",
idade: 30,
profissao: "Dev"
};
pessoa.nome; // "Carlos"
pessoa["idade"]; // 30
pessoa.email = "c@x.com"; // adicionar propriedade
Operadores
Operadores Aritméticos
let a = 10, b = 3;
a + b; // 13
a - b; // 7
a * b; // 30
a / b; // 3.333...
a % b; // 1
let x = 5;
let y = x++; // y=5, x=6 (pós-incremento)
let z = ++x; // x=7, z=7 (pré-incremento)
Operadores de Comparação
// Comparação fraca (com coerção)
"5" == 5; // true
"5" != 5; // false
// Comparação estrita (sem coerção)
"5" === 5; // false
"5" !== 5; // true
Operadores Lógicos
true && false; // false
true || false; // true
!true; // false
Estruturas de Controle
let nota = 7;
if (nota >= 7) {
console.log("Aprovado");
} else if (nota >= 5) {
console.log("Recuperação");
} else {
console.log("Reprovado");
}
let dia = "seg";
switch (dia) {
case "seg":
console.log("Início da semana");
break;
case "sex":
console.log("Sextou!");
break;
default:
console.log("Dia comum");
}
// Operador ternário
let status = nota >= 7 ? "Aprovado" : "Reprovado";
Laços de Repetição
for (let i = 0; i < 5; i++) {
console.log(`Iteração ${i}`);
}
let frutas = ["maçã", "uva", "pera"];
for (let item of frutas) {
console.log(item);
}
let usuario = { nome: "Ana", idade: 25 };
for (let chave in usuario) {
console.log(chave, usuario[chave]);
}
let contador = 0;
while (contador < 3) {
console.log(contador);
contador++;
}
Funções
Função Declarativa
function somar(a, b) {
return a + b;
}
Expressão de Função
const multiplicar = function(a, b) {
return a * b;
};
Arrow Functions
const cubo = n => n ** 3;
const saudar = () => "Bem-vindo!";
const calcular = (x, y, op) => {
return op(x, y);
};
Em JavaScript, parâmetros não precisam corresponder exatamente aos argumentos. O objeto arguments captura todos os argumentos passados, e valores ausentes resultam em undefined.
Objetos Nativos
Date
let agora = new Date();
agora.getFullYear(); // ano atual
agora.getMonth(); // 0-11
agora.getDate(); // dia do mês
agora.getHours(); // 0-23
agora.getMinutes(); // 0-59
agora.getTime(); // timestamp desde 1970
JSON
let dados = { usuario: "joao", pontos: 100 };
let jsonStr = JSON.stringify(dados); // objeto -> string
let obj = JSON.parse(jsonStr); // string -> objeto
RegExp
let padrao1 = new RegExp("^[a-z]{3,8}$");
let padrao2 = /^[a-z]{3,8}$/;
padrao2.test("abc"); // true
padrao2.test("123"); // false