Fundamentos Essenciais do JavaScript: Sintaxe, Funções e Objetos

Operadores em JavaScript

JavaScript oferece diversos conjuntos de operadores para manipular dados e realizar avaliações lógicas.

// Operadores Aritméticos
// + (soma), - (subtração), * (multiplicação), / (divisão), % (módulo), ++ (incremento), -- (decremento)

// Operadores Lógicos
// && (E lógico), || (OU lógico), ! (NÃO lógico)

// Operadores de Comparação
// == (igualdade de valor), != (diferença de valor)
// === (igualdade estrita: valor e tipo), !== (diferença estrita)
// > (maior), < (menor), >= (maior ou igual), <= (menor ou igual)

// Operadores de Atribuição
// = (atribuição simples), +=, -=, *=, /= (atribuições compostas)

Estruturas de Controle de Fluxo

As estruturas de contrloe permitem ditar o caminho que a execução do código deve seguir com base em condições ou repetições.

// 1. Condicional If...Else
let pontuacao = 85;
if (pontuacao >= 90) {
    console.log('Excelente');
} else if (pontuacao >= 70) {
    console.log('Aprovado');
} else {
    console.log('Reprovado');
}

// 2. Estrutura Switch
let categoria = 'admin';
switch (categoria) {
    case 'usuario':
        console.log('Acesso limitado');
        break;
    case 'admin':
        console.log('Acesso total');
        break;
    default:
        console.log('Visitante');
}

// 3. Loops: For e For...in
let frutas = ['maçã', 'banana', 'uva'];

// Iteração clássica
for (let i = 0; i < frutas.length; i++) {
    console.log(i, frutas[i]);
}

// Iteração em propriedades/índices
for (let index in frutas) {
    console.log(index, frutas[index]);
}

// 4. Loop While
let contador = 0;
while (contador < 5) {
    console.log('Contagem:', contador);
    contador++;
}

// 5. Operador Ternário
let idade = 20;
let status = (idade >= 18) ? 'Maior de idade' : 'Menor de idade';

Trabalhando com Funções

Funções são blocos de construção fundamentais que encapsulam lógica reutilizável.

// Função Declarativa
function calcularSoma(a, b) {
    return a + b;
}

// Função Anônima (atribuída a uma variável)
const multiplicar = function(x, y) {
    return x * y;
};

// IIFE (Immediately Invoked Function Expression)
(function(mensagem) {
    console.log('Execução imediata:', mensagem);
})('Olá Mundo');

// Arrow Function (Sintaxe reduzida)
const dobrarValor = n => n * 2;
const subtrair = (a, b) => a - b;

Escopo e Closures

O JavaScript gerencia o acesso a variáveis através de escopos léxicos e suporta closures, onde uma função interna mantém acesso ao ambiente da função externa.

// Exemplo de Closure
function criarSaudacao(saudacao) {
    return function(nome) {
        console.log(saudacao + ', ' + nome);
    };
}
const saudarOi = criarSaudacao('Oi');
saudarOi('Carlos'); // Exibe: "Oi, Carlos"

// Análise Léxica (Hoisting de Variáveis com 'var')
var local = 'Global';
function testarEscopo() {
    console.log(local); // undefined devido ao hoisting da declaração interna
    var local = 'Local';
    console.log(local); // 'Local'
}

Criação e Manipulação de Objetos

Além de objetos literais, JavaScript permite criar objetos via construtores e gerenciar herança via protótipos.

// Objeto via construtor Object
let carro = new Object();
carro.marca = 'Toyota';
carro.ano = 2022;

// Função Construtora e Protótipo
function Animal(especie) {
    this.especie = especie;
}

Animal.prototype.emitirSom = function() {
    console.log(this.especie, 'fazendo som...');
};

let cachorro = new Animal('Cão');
cachorro.emitirSom();

Objetos Nativos do JavaScript

Map

O objeto Map permite armazenar pares chave-valor, onde a chave pode ser de qualquer tipo.

let dicionario = new Map();
dicionario.set('id', 101);
dicionario.set(true, 'booleano');

console.log(dicionario.get('id')); // 101
console.log(dicionario.has(true)); // true
dicionario.delete('id');

Date

Para manipulação de datas e horários.

let agora = new Date();
console.log(agora.getFullYear()); // Ano atual
console.log(agora.getMonth());    // Mês (0-11)
console.log(agora.getTime());     // Timestamp em milissegundos

let dataEspecifica = new Date(2023, 11, 25, 10, 30); // 25 de Dezembro de 2023

JSON

Utilizado para converter objetos em strings (serialização) e vice-versa.

let usuario = { nome: 'Ana', idade: 25 };
let jsonString = JSON.stringify(usuario); // Objeto para String
let objetoNovo = JSON.parse(jsonString);  // String para Objeto

RegExp (Expressões Regulares)

Utilizado para busca e substituição de padrões em textos.

let padrao = /javascript/i; // 'i' para case-insensitive
let frase = 'Amo JavaScript';
console.log(padrao.test(frase)); // true

// Métodos de String com Regex
let texto = 'Café com leite e café com açúcar';
let resultado = texto.replace(/café/gi, 'Chá'); // Substituição global

Math

Provê propriedades e métodos para funções matemáticas.

Math.abs(-5);       // 5
Math.random();      // Número entre 0 e 1
Math.floor(4.9);    // 4 (arredonda para baixo)
Math.round(4.5);    // 5 (arredonda para o mais próximo)
Math.max(10, 20);   // 20
Math.pow(2, 3);     // 8 (2 elevado a 3)

Tags: javascript web-development frontend backend

Publicado em 8-5 07:10