1
resposta

[Dúvida] variaveis e tipos de dados (exercicios)

obs: gostaria de reforçar se eu consegui fazer a questão 10 corretamente, não entendi ela muito bem rsrsrs

//1
let nomeCompleto = 'Ana Beatriz Ferreira Germano'

console.log(`Olá, ${nomeCompleto}! Seja bem vinda ao curso de JavaScript`)

//2

const anoAtual = 2026
let anoNascimento = 2005

let idade = anoAtual - anoNascimento

console.log(`Você tem ${idade} anos`)


//3

let cidade = 'Lins'
let estado = 'SP'
let pais = 'Brasil'

console.log(`Você está em ${cidade}-${estado}, ${pais}`)


//4

let temCarteira = true 

console.log(typeof temCarteira)

//5

let saldo = 0
let deposito = 200
let saque = 50

saldoNovo = 200 - 50

console.log(`O saldo inicial era de R$ ${saldo}, depois foi depositado R$ ${deposito} e sacado ${saque}, sendo assim o saldo atual é de R$ ${saldoNovo} `)

//6

let notaMatematica = 8
let notaPortugues = 9
let notaCiencias = 10

media = (notaMatematica + notaPortugues + notaCiencias) / 3

console.log(`A média do aluno é de: ${media}`)

//7

let salario = 3000
let porcentagemAumento = salario * 0.1

let valorAumento = salario + porcentagemAumento

console.log(`Parabens! Você recebeu um aumento de 10%, vai receber R$${valorAumento}`)


//8

let cliques = 0

while(cliques < 3){
    cliques++
    console.log(`Número de cliques: ${cliques}`)
}

//9

// const PI = 4.13
// PI = 0.12
// console.log(PI)
// esse erro acontece pois a variavel do tipo const contém valor constante e é utilizada para permanecel imutavel


//10
let nome = 'Ana'
let idadeAna = '18'

console.log(`Nome: ${nome}(${typeof nome}) | Idade: ${idadeAna}(${typeof idadeAna})`)
1 resposta

Oi, Ana! Bora falar da questão 10

Vi seu recado pedindo pra reforçar se a 10 saiu certinho, e a resposta curta é: saiu, sim. Mas tem um detalhezinho que vale a gente conversar, porque eu acho que é justamente ele que tá deixando a questão meio nebulosa na sua cabeça (e isso é super comum, viu? rsrs).

O que a questão tá pedindo

A ideia da questão 10 é vc usar o operador typeof pra mostrar o tipo de cada variável dentro de uma mensagem. O typeof é tipo um detetive: vc joga uma variável pra ele e ele te devolve uma string dizendo "isso aqui é um número", "isso aqui é uma string", "isso aqui é um booleano", e assim vai.

Seu código fez exatamente isso:

let nome = 'Ana'
let idadeAna = '18'

console.log(`Nome: ${nome}(${typeof nome}) | Idade: ${idadeAna}(${typeof idadeAna})`)

E a saída disso vai ser:

Nome: Ana(string) | Idade: 18(string)

Funciona. A sintaxe tá correta, o template literal tá bem montado, o typeof tá sendo chamado do jeito certo. Então, do ponto de vista de "o código roda e mostra os tipos?", tá redondo.

Agora, o detalhe que talvez seja a sua dúvida

Repara que vc colocou o 18 entre aspas:

let idadeAna = '18'

Quando vc põe entre aspas, o JavaScript entende aquilo como string (texto), não como number (número). Então o typeof vai te devolver "string" ali na idade, mesmo parecendo um número pra gente que tá lendo.

Se a intenção era a idade ser um número de verdade, seria assim:

let idadeAna = 18

Sem as aspas. Aí o typeof idadeAna ia retornar "number", e a saída ficaria:

Nome: Ana(string) | Idade: 18(number)

Não sei exatamente como o enunciado da questão tava redigido, mas suspeito que a ideia fosse mostrar dois tipos diferentes (um string e um number), justamente pra vc ver o typeof retornando coisas distintas e sentir a diferença na prática. Do jeito que tá agora, os dois aparecem como string, o que meio que tira a graça do exercício.

Por que isso confunde tanto

Esse "número entre aspas vira texto" pega muita gente no começo, e faz total sentido se confundir. Pra gente que lê, '18' e 18 parecem a mesma coisa. Mas pro JavaScript:

  • 18 é um número, dá pra somar, multiplicar, fazer conta
  • '18' é um texto que por acaso tem caracteres de número dentro

Um teste que ajuda a sentir isso na pele:

console.log('18' + 1)   // resultado: '181'  (juntou os textos)
console.log(18 + 1)     // resultado: 19     (somou os números)

Olha que doideira. No primeiro caso, o + entendeu "ah, tem texto envolvido, então vou grudar uma coisa na outra". No segundo, fez a soma matemática mesmo. Esse comportamento é uma das coisas mais clássicas de JS pra confundir quem tá começando (e até quem já tá faz tempo, vou ser sincero).

Então, voltando pra sua questão

Se vc quer entregar ela do jeito que provavelmente o exercício pediu (mostrando tipos diferentes), só tira as aspas do 18:

let nome = 'Ana'
let idadeAna = 18

console.log(`Nome: ${nome}(${typeof nome}) | Idade: ${idadeAna}(${typeof idadeAna})`)

Roda isso e vc vai ver string num lugar e number no outro. Aí sim, dá pra perceber o typeof fazendo o trabalho dele de verdade.

Mas, repetindo: do ponto de vista de sintaxe, vc não errou nada. Foi só uma questão de o valor ter sido declarado como texto sem querer. Acontece com todo mundo, e perceber esse tipo de coisa agora vai te poupar muita dor de cabeça lá na frente, quando vc tiver fazendo conta com valor que veio de um formulário (spoiler: tudo que vem de formulário vem como string, e vc vai precisar converter rs).

Continua mandando bem assim, vc tá no caminho. Qualquer dúvida que aparecer nos próximos exercícios, manda aqui que a gente resolve.