## 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.
// 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