## glossário

O que é JavaScript?

JavaScript é uma linguagem de programação interpretada, dinâmica e de alto nível, criada em 1995 por Brendan Eich em apenas dez dias. É a única linguagem que os navegadores executam nativamente — o que a tornou obrigatória para qualquer coisa interativa na web.

Seu escopo, porém, deixou o navegador há muito tempo. Com o Node.js ela passou a rodar em servidores; com React Native, em aplicativos móveis; com Electron, em programas de desktop como VS Code e Discord.

Características que definem a linguagem

  • Tipagem dinâmica e fraca — variáveis não declaram tipo e conversões acontecem implicitamente, o que dá flexibilidade e também gera surpresas.
  • Multiparadigma — aceita estilo imperativo, orientado a objetos (por protótipos) e funcional.
  • Funções de primeira classe — funções são valores: podem ser passadas como argumento, retornadas e armazenadas.
  • Single-thread com laço de eventos — executa uma coisa por vez, mas delega operações demoradas e continua respondendo.
  • Closures — uma função guarda acesso ao escopo onde foi criada, base de boa parte dos padrões da linguagem.

Assincronismo: o coração do JavaScript

Como a linguagem é single-thread, ela não pode ficar parada esperando uma resposta de rede. A solução é o event loop: operações demoradas são delegadas ao ambiente e o resultado volta depois, via callback, Promise ou async/await.

A mesma operação nas três gerações da linguagem
// callback — aninhamento cresce rápido
buscarUsuario(42, (erro, usuario) => {
  buscarPedidos(usuario.id, (erro, pedidos) => {
    console.log(pedidos);
  });
});

// Promise — encadeamento plano
buscarUsuario(42)
  .then((usuario) => buscarPedidos(usuario.id))
  .then((pedidos) => console.log(pedidos));

// async/await — lê como código síncrono
const usuario = await buscarUsuario(42);
const pedidos = await buscarPedidos(usuario.id);
console.log(pedidos);

As armadilhas clássicas

A tipagem fraca produz comportamentos que confundem quem está começando: 0.1 + 0.2 não é exatamente 0.3 (aritmética de ponto flutuante), [] == false é verdadeiro (coerção implícita) e typeof null retorna "object" (um bug preservado desde 1995 por compatibilidade). Comparar com === em vez de == evita boa parte desses casos, e o TypeScript elimina outra boa parte ainda em tempo de escrita.

ECMAScript e a evolução anual

JavaScript é a implementação de um padrão chamado ECMAScript. Desde o ES6 (2015) — que trouxe let, const, arrow functions, classes, módulos e Promises — o padrão recebe uma revisão por ano. Para praticar o que muda a cada versão, vale conferir os 7 sites para praticar JavaScript.

## faq

Perguntas frequentes

JavaScript e Java são a mesma coisa?

Não têm relação. O nome foi uma decisão de marketing em 1995, quando Java estava em alta. São linguagens com sintaxe, modelo de execução e propósitos distintos.

Preciso aprender JavaScript antes de um framework?

Sim. React, Vue e Angular são JavaScript com convenções por cima. Sem entender closures, promises, desestruturação e escopo, você trava em erros que parecem do framework mas são da linguagem — e a depuração fica muito mais difícil.

JavaScript é bom para backend?

É uma escolha sólida, especialmente para APIs e aplicações com muita entrada e saída de dados, onde o modelo assíncrono rende bem. Para processamento pesado de CPU ou computação numérica intensa, linguagens como Go, Rust ou Python com bibliotecas nativas tendem a ser mais adequadas.

## leia também

Artigos relacionados