Introdução ao JavaScript
JavaScript

O que é JavaScript?
JavaScript (JS) é uma linguagem de programação criada para tornar as páginas da web interativas. Ele é uma das três principais tecnologias da web, junto com HTML e CSS.
✅ Com JavaScript, podemos:
Criar animações e efeitos visuais. Manipular o conteúdo da página sem precisar recarregá-la. Fazer requisições a servidores para buscar ou enviar dados (AJAX, Fetch, APIs). Criar jogos, aplicativos web e até aplicativos mobile com frameworks como React Native. Hoje em dia, o JavaScript vai muito além do navegador! Ele pode ser usado no back-end (Node.js), em bancos de dados (MongoDB), inteligência artificial, IoT (Internet das Coisas) e muito mais.
Quem criou o JavaScript?
O JavaScript foi criado por Brendan Eich, um programador da empresa Netscape, em 1995.
Na época, a Netscape queria adicionar uma linguagem de scripts ao seu navegador, o Netscape Navigator. A ideia era que os desenvolvedores pudessem criar interações dinâmicas em páginas da web.
Brendan Eich criou o JavaScript em apenas 10 dias! 😲 Isso porque a Netscape estava competindo com a Microsoft, que tinha o Internet Explorer, e precisava lançar rapidamente uma tecnologia inovadora.
A origem do nome "JavaScript"
Muita gente pensa que JavaScript tem relação com a linguagem Java, mas isso não é verdade!
📌 Curiosidade: O JavaScript foi inicialmente chamado de Mocha, depois LiveScript, mas a Netscape fez uma parceria com a Sun Microsystems (criadora do Java) e mudou o nome para JavaScript por motivos de marketing.
Apesar do nome parecido, Java e JavaScript são linguagens diferentes!
A Evolução do JavaScript
Desde sua criação, o JavaScript passou por muitas melhorias. Ele se tornou um padrão chamado ECMAScript (ES), que recebe atualizações regulares.
Aqui estão as versões mais importantes do ECMAScript:
| Ano | Versão | O que mudou? |
|---|---|---|
| 1997 | ES1 | Primeira versão oficial do ECMAScript. |
| 1999 | ES3 | Introduziu suporte a expressões regulares e try/catch. |
| 2009 | ES5 | Adicionou JSON, strict mode, e novos métodos de array. |
| 2015 | ES6 (ECMAScript 2015) | Maior atualização! Introduziu let, const, arrow functions, classes e Promises. |
| 2016+ | ES7, ES8, ES9... | Novos recursos como async/await, spread/rest operators, e melhorias na linguagem. |
Hoje, o JavaScript é usado em qualquer lugar, desde páginas da web até servidores e aplicativos móveis.
O que é ECMAScript (ES)?
ECMAScript é o padrão que define a linguagem JavaScript. Ele é criado e mantido pela organização ECMA International através da especificação ECMA-262.
Ou seja, JavaScript é uma implementação do ECMAScript.
📌 Pense assim:
ECMAScript é a base da linguagem. JavaScript adiciona funcionalidades extras, como manipulação do DOM e APIs do navegador.
🔹 O que é ES6? O ES6 (ECMAScript 2015) é a 6ª versão do ECMAScript, lançada em 2015. Ele trouxe várias melhorias e novos recursos para o JavaScript.
Antes do ES6, o JavaScript era bem limitado. Com o ES6, ele ficou mais moderno e poderoso.
1. Console no javascript
Executando no navegador (DevTools Console):
- Abra o console do navegador
(F12 → Console)e digite:
console.log("Olá, mundo!");
2. Incluindo JavaScript no HTML
- Crie um arquivo index.html e adicione:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Meu Primeiro JS</title>
</head>
<body>
<h1>Bem-vindo ao JavaScript!</h1>
<script>
alert("Olá, seja bem-vindo!");
</script>
</body>
</html>
3. Fundamentos sobre javascript
Variáveis
Em JavaScript, podemos declarar variáveis usando var, let e const.
var: Antigo e não recomendado, pois pode causar problemas de escopo.let: Permite reatribuição e tem escopo de bloco.const: Não pode ser reatribuído e também tem escopo de bloco.
Exemplo de uso:
let nome = "Marcos";
const idade = 25;
var cidade = "Rio de Janeiro";
console.log(nome, idade, cidade);
Tipos de Dados JavaScript possui diferentes tipos de dados primitivos e estruturais. Os principais são:
- String: Texto entre aspas ("Hello")
- Number: Números inteiros ou decimais (42, 3.14)
- Boolean: Verdadeiro ou falso (true, false)
- Array: Lista de valores ([1, 2, 3])
- Objeto: Conjunto de pares chave-valor
JS({ nome: "Marcos", idade: 25 })Exemplo de como verificar o tipo de cada dado:
let texto = "Hello";
let numero = 42;
let booleano = true;
let array = [1, 2, 3];
let objeto = { nome: "Marcos", idade: 25 };
console.log(typeof texto, typeof numero, typeof booleano, typeof array, typeof objeto);
4. Declaração de Variáveis (let e const)
Antes do ES6, só existia var. Agora temos let e const, que são mais seguras.
// Antes do ES6 (com var)
var nome = "João";
console.log(nome);
// Com ES6 (melhor prática)
let idade = 25;
const PI = 3.14;
console.log(idade, PI);
5. Arrow Functions (Funções de seta) =>
As arrow functions tornam o código mais curto e legível.
// Antes do ES6
function somar(a, b) {
return a + b;
}
console.log(somar(3, 4)); // 7
// Com ES6 (Arrow Function)
const somarES6 = (a, b) => a + b;
console.log(somarES6(3, 4)); // 7
3. Template Literals (Interpolação de Strings)
const nome = "Carlos";
const idade = 30;
// Antes do ES6
console.log("Meu nome é " + nome + " e tenho " + idade + " anos.");
// Com ES6
console.log(`Meu nome é ${nome} e tenho ${idade} anos.`);
6. Destructuring (Desestruturação de Objetos e Arrays)
Facilita o acesso a dados dentro de objetos e arrays.
// Antes do ES6
const pessoa = { nome: "Ana", idade: 22 };
const nomePessoa = pessoa.nome;
const idadePessoa = pessoa.idade;
console.log(nomePessoa, idadePessoa);
// Com ES6 (Destructuring)
const { nome, idade } = pessoa;
console.log(nome, idade);
7. Spread Operator (...)
O spread operator (...) permite espalhar elementos de um array ou objeto.
const numeros = [1, 2, 3];
const novosNumeros = [...numeros, 4, 5]; // Copia e adiciona novos elementos
console.log(novosNumeros); // [1, 2, 3, 4, 5]
Manipulação de Arrays e Objetos
✅ Arrays e métodos principais
map(): Itera sobre um array e retorna um novo array modificado.filter(): Filtra elementos de um array com base em uma condição.reduce(): Reduz um array a um único valor, aplicando uma função acumuladora.forEach(): Itera sobre um array, mas sem retornar um novo array.find(): Retorna o primeiro elemento do array que satisfaz a condição.
📝 Exemplos
const numeros = [1, 2, 3, 4, 5];
const dobrados = numeros.map(num => num * 2);
console.log(dobrados); // [2, 4, 6, 8, 10]
const pares = numeros.filter(num => num % 2 === 0);
console.log(pares); // [2, 4]
const somaTotal = numeros.reduce((acc, num) => acc + num, 0);
console.log(somaTotal); // 15
numeros.forEach(num => console.log(num * 10)); // 10, 20, 30, 40, 50
const encontrado = numeros.find(num => num > 3);
console.log(encontrado); // 4
✅ Objetos e manipulação de propriedades
const pessoa = {
nome: "Marcos",
idade: 30,
cidade: "Rio de Janeiro"
};
console.log(pessoa.nome); // Marcos
pessoa.profissao = "Desenvolvedor";
console.log(pessoa);
8. Default Parameters (Parâmetros Padrão)
Permite definir valores padrões para funções.
// Antes do ES6
function saudacao(nome) {
nome = nome || "Visitante";
return `Olá, ${nome}!`;
}
console.log(saudacao()); // "Olá, Visitante!"
// Com ES6
const saudacaoES6 = (nome = "Visitante") => `Olá, ${nome}!`;
console.log(saudacaoES6()); // "Olá, Visitante!"
9. Promises (Trabalhando com operações assíncronas)
O ES6 trouxe Promises, que são muito usadas para lidar com operações assíncronas, como requisições para APIs.
const promessa = new Promise((resolve, reject) => {
let sucesso = true;
setTimeout(() => {
if (sucesso) {
resolve("Dados carregados!");
} else {
reject("Erro ao carregar os dados.");
}
}, 2000);
});
promessa
.then((res) => console.log(res)) // "Dados carregados!"
.catch((erro) => console.log(erro));
Outro exemplo
Exemplo simples usando fetch para buscar a cotação do dólar na API pública do Banco Central do Brasil e exibir no console:
fetch('https://economia.awesomeapi.com.br/json/last/USD-BRL')
.then(response => response.json())
.then(data => console.log(`Cotação do Dólar: R$ ${data.USDBRL.bid}`))
.catch(error => console.error('Erro ao buscar cotação:', error));
Exemplo mais complexo
const valorEmReais = 100; // Defina o valor em reais aqui
fetch('https://economia.awesomeapi.com.br/json/last/USD-BRL')
.then(response => response.json())
.then(data => {
const cotacao = parseFloat(data.USDBRL.bid);
const valorEmDolar = (valorEmReais / cotacao).toFixed(2);
console.log(`R$ ${valorEmReais} equivale a $ ${valorEmDolar} dólares.`);
})
.catch(error => console.error('Erro ao buscar cotação:', error));
10. Escopo
- Variáveis e funções definidas dentro de um bloco
{}, não são visíveis fora dele.
function precisoVisitar(paisesVisitados) {
var totalPaises = 193;
return `Ainda faltam ${totalPaises - paisesVisitados} paises para visitar`
}
console.log(totalPaises); // erro, totalPaises não definido
9. Escopo Léxico
- Funções conseguem acessar variáveis que foram criadas no contexto pai. O Escopo Léxico em JavaScript significa que uma função pode acessar variáveis definidas dentro dela e também nas funções e blocos externos onde foi declarada.
Ou seja, quando uma função é criada, ela "lembra" onde foi definida e consegue acessar variáveis desse local, mesmo que seja chamada em outro contexto.
var profissao = 'Designer';
function dados() {
var nome = 'Marcos';
var idade = 27;
function outrosDados() {
var endereco = 'Rio de Janeiro';
var idade = 29;
return `${nome}, ${idade}, ${endereco}, ${profissao}`;
}
return outrosDados();
}
dados(); // Retorna 'Marcos, 29, Rio de Janeiro, Designer'
outrosDados(); // retorna um erro
11. Objetos
- Conjunto de variáveis e funções, que são chamadas de propriedades e métodos.
var pessoa = {
nome: 'Luiz',
idade: 32,
profissao: 'Designer',
possuiFaculdade: true,
}
pessoa.nome; // 'Luiz'
pessoa.possuiFaculdade; // true
Propriedades e métodos consistem em nome (chave) e valor
12. Métodos
- São propriedades de um objeto que armazenam funções como valor. Elas permitem que o objeto execute ações e manipule seus próprios dados, tornando o código mais organizado e reutilizável.
var quadrado = {
lados: 4,
area: function(lado) {
return lado * lado;
},
perimetro: function(lado) {
return this.lados * lado;
},
}
quadrado.lados; // 4
quadrado.area(5); // 25
quadrado.perimetro(5); // 20
No ES6+, a sintaxe para definir métodos em objetos foi simplificada. Antes, era comum usar a seguinte forma: Sintaxe antes do ES6:
const objeto = {
area: function() {
return "Calculando área...";
}
};
Sintaxe no ES6+ (método abreviado):
const objeto = {
area() {
return "Calculando área...";
}
};
A principal diferença é que no ES6+ não é necessário usar function, tornando o código mais limpo e legível.
13. Organização do Código com Objetos
Os objetos ajudam a organizar o código em pequenas partes reutilizáveis, tornando-o mais modular e fácil de manter.
Exemplo com o objeto Math
- O JavaScript possui objetos nativos, como Math, que fornecem métodos e propriedades úteis:
console.log(Math.PI); // 3.141592653589793
console.log(Math.random()); // Número aleatório entre 0 e 1
var pi = Math.PI;
console.log(pi); // 3.141592653589793
No exemplo acima, Math.PI é uma propriedade que retorna o valor de π, enquanto Math.random() é um método que gera um número aleatório.
14. Objetos e Métodos
Já reparou que console também é um objeto e log() é um método dele?
console.log("Olá, mundo!"); // Exibe "Olá, mundo!" no console
Isso mostra como os objetos podem armazenar tanto propriedades quanto métodos, facilitando a reutilização e organização do código.
15. Criar um Objeto
Um objeto é criado utilizando as chaves {}
var carro = {};
var pessoa = {};
console.log(typeof carro); // 'object'
16. Dot Notation Get
Acesse propriedades de um objeto utilizando o ponto .
var menu = {
width: 900,
height: 70,
backgroundColor: '#8f4E',
}
var bg = menu.backgroundColor; // '#8f4E'
17. Dot Notation Set
Substitua o valor de uma propriedade utilizando . e o = após o nome da mesma.
var menu = {
width: 800,
height: 50,
backgroundColor: '#84E',
}
menu.backgroundColor = '#000';
console.log(menu.backgroundColor); // '#000'
Resumo: Qual a diferença?
| Termo | O que significa? |
|---|---|
| ECMAScript | O padrão da linguagem JavaScript. Define regras e funcionalidades. |
| JavaScript | Uma implementação do ECMAScript. Adiciona suporte ao DOM e APIs do navegador. |
| ES6 (ECMAScript 2015) | A 6ª versão do ECMAScript, lançada em 2015, que trouxe melhorias significativas para o JavaScript. |
📌 Conclusão
- ECMAScript é o padrão da linguagem.
- JavaScript é uma linguagem baseada no ECMAScript.
- ES6 trouxe melhorias que tornaram o JavaScript mais moderno e poderoso.