// 1. Destructuring em objetos
// Crie um objeto com nome, idade e email. Use destructuring para extrair essas informações em variáveis separadas.
let usuario = {
nome: "John Snow",
idade: 22,
email:"john.snow@nightswatch.org"
}
let {nome, idade,email} = usuario
console.log(nome, idade, email)
// 2. Destructuring em arrays
// Crie um array com 3 linguagens de programação. Use destructuring para criar variáveis ling1, ling2 e ling3.
let linguagens = ['JavaScript', 'Python', 'Java']
let [ling1,ling2,ling3] = linguagens
console.log(ling1,ling2,ling3)
// 3. Rest operator em função
// Crie uma função que receba vários números como parâmetros usando o operador rest (...).
// Utilize um laço for para somar todos os valores recebidos e retorne o total.
const recebeNumeros = (...numeros) => {
let somaNumeros = 0;
for (let numero of numeros) {
somaNumeros += numero;
}
return somaNumeros;
};
console.log(recebeNumeros(1, 2, 3, 4, 5));
// ou
function somarTudo(...numeros) {
let soma = 0;
for (let i = 0; i < numeros.length; i++) {
soma += numeros[i];
}
return soma;
}
console.log(somarTudo(1, 2, 3, 4));
// 4. Spread operator com arrays
// Crie dois arrays de frutas e combine-os usando o operador spread.
let frutasVermelhas = ['Morango', 'Amora', 'Mirtilo', 'Cereja']
let frutasVerdes = ['Goiaba','Kiwi','Abacate']
let mix =[...frutasVermelhas,...frutasVerdes]
console.log(mix)
// 5. Spread operator com objetos
// Crie dois objetos: um com nome e outro com idade. Combine-os em um terceiro objeto usando spread.
let o1 = {nome: 'George'}
let o2 = {idade: 42}
let perfil = {...o1,...o2}
console.log(perfil)
// 6. Função com parâmetro default
// Crie uma função que recebe um nome e imprime "Olá, [nome]". Se o nome não for passado, use "visitante" como valor padrão.
function saudacao (nome = 'visitante') {
console.log(`Olá, ${nome}`)
}
saudacao()
saudacao('Diógenes')
// 7. Trabalhando com datas
// Crie uma variável com a data atual e exiba o dia, mês e ano formatados.
let dataAtual = new Date('2026-10-02T20:00:00-03:00')
console.log('Data formatada (BR):',dataAtual.toLocaleDateString('pt-BR'))
console.log(dataAtual)
const dia = dataAtual.getDate()
const mes = dataAtual.getMonth()+1
const ano = dataAtual.getFullYear()
console.log(`Dia: ${dia} Mês: ${mes} Ano: ${ano}`)
// 8. Modularização com export/import
// Crie uma função simples chamada somar(a, b) e exporte-a como módulo (modo CommonJS ou ES Modules, dependendo do ambiente).
// package.json (somar):
// {
// "name": "somar",
// "version": "1.0.0",
// "description": "",
// "main": "app.js",
// "scripts": {
// "test": "echo \"Error: no test specified\" && exit 1"
// },
// "keywords": [],
// "author": "",
// "license": "ISC",
// "type": "module"
// }
// arquivo somar.js:
// export function somar(a,b) {
// return a + b
// }
// arquivo app.js:
// import {somar} from './somar.js'
// console.log(somar(4,3))
// 9. Destructuring em parâmetros de função
// Crie um objeto livro com titulo e autor. Crie uma função descreverLivro que recebe o objeto já desestruturado nos parâmetros ({ titulo, autor }) e retorna uma frase como "O livro [titulo] foi escrito por [autor].". Teste chamando a função com dois livros diferentes.
function descreverLivro({titulo, autor}) {
return `O livro ${titulo} foi escrito por ${autor}`
}
let livro1 = {
titulo: 'O Alienista',
autor: 'Machado de Assis'
}
let livro2 = {
titulo: 'O PRECARIADO: A NOVA CLASSE PERIGOSA',
autor: 'Guy Stanging'
}
console.log(descreverLivro(livro1))
console.log(descreverLivro(livro2))
// 10. Atualizando objetos com spread
// A partir do livro1, crie um livro1Atualizado usando spread, alterando apenas o autor para "Edição revisada" e adicionando uma nova propriedade edicao: 2. Exiba livro1 e livro1Atualizado no console e confirme que o original não foi alterado.
let livro1Atualizado = {
...livro1,
autor: 'Edição revisada',
edicao: 2
}
console.log(livro1);
console.log(livro1Atualizado)