Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA
LiçãoIniciantecódigo testado

O que é JavaScript e para que serve na prática

JavaScript é a única linguagem que o navegador executa nativamente, e com o Node ela roda no servidor. O que é, onde roda e por que não é Java.

Rodolfo Mori7 min de leitura

JavaScript é uma linguagem de programação criada em 1995 para dar comportamento às páginas da web. É a única linguagem que todo navegador do mundo executa sem plugin, sem compilador e sem instalação. Se numa página alguma coisa muda sem recarregar — um menu que abre, um preço que atualiza, um formulário que reclama antes de enviar — foi JavaScript que fez.

Desde 2009, com a chegada do Node.js, ela deixou de morar só no navegador. O mesmo código que soma o carrinho na tela pode somar o carrinho no servidor. É por isso que ela virou a primeira linguagem da maior parte das pessoas que entram na área: uma sintaxe só, e você circula pela aplicação inteira.

Esta é a primeira lição da trilha de JavaScript. Ela responde o que a linguagem é e onde ela roda. As próximas ensinam a escrever.

O atendente que reage ao que acontece na página

HTML monta o balcão e CSS decide a aparência. JavaScript é o atendente que reage: alguém clica, digita ou envia um formulário; ele lê o acontecimento, toma uma decisão e atualiza a página. No servidor, o mesmo atendente recebe uma requisição em vez de um clique e devolve uma resposta.

O nome técnico para isso continua sendo linguagem de programação: há valores, condições, repetições e funções sendo executadas por um motor. Nas duas linhas do primeiro exemplo, preveja primeiro qual valor será calculado e onde ele aparecerá. Rodar e conferir essa previsão é a menor experiência completa com JavaScript.

Você não precisa de projeto, pasta nem editor para executar JavaScript agora. Abra o navegador, aperte F12 (Cmd+Option+I no Mac), vá na aba Console e digite:

js
2 + 2
4

Isso é um interpretador de verdade, com acesso à página aberta. Se você já tem o Node instalado, o mesmo vale no terminal:

bash
node --version
node -e "console.log(2 + 2)"
v24.16.0 4

Todo exemplo desta lição foi executado no Node 24.16.0 — a versão declarada no topo da página — e a saída que aparece abaixo de cada bloco é a saída real dessa execução, inclusive quando ela é um erro.

O próximo passo é guardar valores e imprimir texto:

js
const produto = 'Teclado mecânico';
const preco = 289.9;

console.log(`${produto} custa R$ ${preco.toFixed(2)}`);
Teclado mecânico custa R$ 289.90

Três coisas aconteceram aí: um valor de texto e um valor numérico foram guardados com nome, o número foi formatado com duas casas e o resultado foi impresso. É o esqueleto de praticamente tudo que você vai escrever nos primeiros meses.

O motor: V8, e por que ele está em dois lugares

Uma linguagem não roda sozinha. Quem executa o código é um programa chamado motor (ou engine), que lê o texto que você escreveu, traduz para instruções de máquina e roda. O motor do Chrome e do Edge é o V8, escrito pelo Google. O Firefox usa o SpiderMonkey, o Safari usa o JavaScriptCore.

A sacada do Node.js foi pegar o V8 — o motor do navegador — e colocá-lo dentro de um programa de terminal, adicionando o que o navegador não tem: acesso a arquivos, rede de servidor, processos. Por isso o Node consegue te contar qual motor está usando:

js
console.log('Node:', process.version);
console.log('V8:  ', process.versions.v8);
Node: v24.16.0 V8: 13.6.233.17-node.49

Guarde essa ideia, porque ela explica quase toda confusão de iniciante: a linguagem é a mesma; o que muda é o conjunto de ferramentas que o ambiente entrega junto.

O que muda entre o navegador e o Node

No navegador existe uma página, e a linguagem ganha objetos para mexer nela: document, window, localStorage, fetch apontando para o mundo. No Node não existe página nenhuma, e no lugar disso aparecem process, sistema de arquivos e servidor HTTP.

js
console.log('document:', typeof document);
console.log('window:  ', typeof window);
console.log('process: ', typeof process);
console.log('global:  ', typeof globalThis);
document: undefined window: undefined process: object global: object

Rodando exatamente esse arquivo no console do navegador, os dois primeiros seriam object e o terceiro, undefined. Nenhum dos dois ambientes está errado: cada um oferece o que faz sentido no lugar onde vive. globalThis aparece nos dois — foi criado justamente para dar um nome único ao objeto global.

JavaScript não é Java — e não é bem ECMAScript

O nome foi jogada comercial. Em 1995 a Netscape chamou a linguagem de LiveScript, viu que Java era o assunto do momento e renomeou para JavaScript antes do lançamento. Não existe parentesco: nenhum código Java roda em JavaScript, nem o contrário, e as duas tratam tipos de maneiras opostas.

A diferença mais visível é que o JavaScript converte tipos sozinho quando você mistura coisas numa conta:

js
console.log('1' + 1);
console.log('3' * 2);
console.log(0.1 + 0.2);
11 6 0.30000000000000004

O + com uma string do lado vira concatenação; o * não tem versão de texto, então converte para número. E a última linha não é bug da linguagem: é o padrão de ponto flutuante binário, o mesmo que Java, Python e C usam. A conversão automática entre texto e número tem lição própria mais à frente, em converter string em número.

ECMAScript é outro assunto. É o nome da especificação — o documento que descreve como a linguagem deve se comportar, publicado uma vez por ano. Cada versão nova entra primeiro nos motores e depois vira coisa comum no código:

js
const pedidos = [
  { id: 4821, cliente: 'Ana', total: 589.7 },
  { id: 4822, cliente: 'Bruno', total: 149.9 },
  { id: 4823, cliente: 'Ana', total: 79.9 },
];

console.log(Object.groupBy(pedidos, (p) => p.cliente));
[Object: null prototype] { Ana: [ { id: 4821, cliente: 'Ana', total: 589.7 }, { id: 4823, cliente: 'Ana', total: 79.9 } ], Bruno: [ { id: 4822, cliente: 'Bruno', total: 149.9 } ] }

Object.groupBy é recente. Num navegador de 2020 essa linha quebraria — e é aí que a especificação importa na prática: ela é a resposta para “posso usar isso hoje?”.

O que se constrói com ela

Fora do jargão, três famílias de coisa:

onde o que você constrói o que a linguagem ganha junto
navegador site, loja, painel, jogo simples document, eventos, fetch
servidor com Node API, integração, automação, robô arquivos, rede, banco de dados
aplicativo app de celular com React Native, desktop com Electron acesso a câmera, notificação, disco

O que une as três é a lógica no meio. Este cálculo de carrinho roda igual nos três ambientes, sem trocar uma vírgula:

js
const carrinho = [
  { nome: 'Teclado mecânico', preco: 289.9, qtd: 1 },
  { nome: 'Mouse sem fio', preco: 149.9, qtd: 2 },
];

const total = carrinho.reduce((soma, i) => soma + i.preco * i.qtd, 0);
const frete = total >= 199 ? 0 : 24.9;

console.log(`total: R$ ${total.toFixed(2)} | frete: R$ ${frete.toFixed(2)}`);
total: R$ 589.70 | frete: R$ 0.00

Aprender a escrever esse meio é o trabalho da trilha. O resto — qual biblioteca, qual framework — é escolha que vem depois, e muda a cada três anos.

Erros comuns de quem está começando

O tropeço número um é copiar código de navegador e rodar no Node. A mensagem é sempre a mesma família:

js
const titulo = document.querySelector('h1');

console.log(titulo.textContent);
file:///private/tmp/loja/l1-dom.mjs:1 const titulo = document.querySelector('h1'); ^

ReferenceError: document is not defined at file:///private/tmp/loja/l1-dom.mjs:1:16 Node.js v24.16.0

document is not defined não quer dizer que você escreveu errado. Quer dizer que esse nome não existe nesse ambiente. O mesmo arquivo, carregado por uma página HTML, funciona. Aprender a ler o erro pelo nome que ele cita economiza horas — essa mesma leitura resolve o TypeError: Cannot read properties of undefined, que é o erro mais comum da linguagem inteira.

Os outros dois tropeços dessa fase:

  • Achar que JavaScript é o mesmo que uma biblioteca. React, jQuery e Node não são a linguagem; são coisas escritas nela. Aprender a linguagem primeiro deixa qualquer uma delas mais rápida de entender depois.
  • Estudar sem executar. Ler sobre a linguagem sem rodar o código produz a sensação de aprendizado sem o aprendizado. Todo bloco deste blog é para ser colado no terminal.

Por onde começar

A ordem que funciona é: rodar o primeiro arquivo, aprender a imprimir, aprender a guardar valores. Nessa sequência.

A próxima lição mostra como executar JavaScript no navegador e no Node, incluindo onde a tag <script> entra na página e por que ela costuma quebrar quando fica no lugar errado. Se quiser ver o mapa completo antes, o guia de JavaScript lista tudo que vem pela frente e onde cada assunto entra. E se seu interesse em programar veio de inteligência artificial, vale entender antes o que é um LLM — a linguagem continua sendo a ferramenta, mas o objetivo muda o caminho.

Prefere aprender em vídeo?

Tem aula sobre este assunto no nosso canal.

Ver todos os vídeos do canal
  • javascript
  • iniciante
  • navegador
  • node
  • v8

Perguntas frequentes

JavaScript e Java são a mesma coisa?
Não têm relação técnica nenhuma. O nome foi decisão de marketing de 1995, quando Java estava em alta. São duas linguagens com tipagem, execução e ecossistema diferentes — e nenhum código de uma roda na outra.
Preciso instalar alguma coisa para começar?
Para as primeiras semanas, não: o console do navegador que você já tem aberto é um interpretador completo. O Node entra quando você quiser guardar o código em arquivo e rodar sem depender de página aberta.
JavaScript serve só para front-end?
Não. Com o Node a mesma linguagem escreve servidor, script de automação e ferramenta de linha de comando. O que muda de um ambiente para outro não é a linguagem, é a biblioteca disponível ao redor dela.
Qual a diferença entre JavaScript e ECMAScript?
ECMAScript é a especificação escrita; JavaScript é o nome da linguagem como ela existe nos motores que implementam essa especificação. Na prática você escreve JavaScript e consulta o ECMAScript quando quer o detalhe fino.

Dúvidas e comentários

Travou em algum passo? Pergunte aqui — a equipe e outros alunos respondem.

Todo o código deste artigo foi executado em Node 24.16.0, e as saídas exibidas são as reais — como produzimos este conteúdo.

Fontes consultadas

  1. MDN — O que é JavaScript? — developer.mozilla.org
  2. Node.js — About Node.js — nodejs.org
  3. V8 — Documentação do motor JavaScript — v8.dev

Continue por aqui