3
respostas

[Dúvida] [DÚVIDA] Desafio 1 #7DaysOfCode

A sua tarefa de hoje é reescrever o código abaixo de maneira que ele imprima as informações de maneira correta, que faça sentido e sem erros:

let numeroUm = 1
let stringUm = '1'
let numeroTrinta = 30
let stringTrinta = '30'
let numeroDez = 10
let stringDez = '10'

if (COMPARAR O numeroUm e a stringUm) {
  console.log('As variáveis numeroUm e stringUm tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroUm e stringUm não tem o mesmo valor')
}

if (COMPARAR O numeroTrinta e a stringTrinta) {
  console.log('As variáveis numeroTrinta e stringTrinta tem o mesmo valor e mesmo tipo')
} else {
  console.log('As variáveis numeroTrinta e stringTrinta não tem o mesmo tipo')
}

if (COMPARAR O numeroDez e a stringDez) {
  console.log('As variáveis numeroDez e stringDez tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroDez e stringDez não tem o mesmo valor')
}

Eu reescrevi da seguinte forma:

let numeroUm = 1
let stringUm = '1'
let numeroTrinta = 30
let stringTrinta = '30'
let numeroDez = 10
let stringDez = '10'

if (numeroUm == stringUm) {
  console.log('As variáveis numeroUm e stringUm tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroUm e stringUm não tem o mesmo valor')
}

if (numeroTrinta == stringTrinta) {
  console.log('As variáveis numeroTrinta e stringTrinta tem o mesmo valor e mesmo tipo')
} else {
  console.log('As variáveis numeroTrinta e stringTrinta não tem o mesmo tipo')
}

if (numeroDez == stringDez) {
  console.log('As variáveis numeroDez e stringDez tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroDez e stringDez não tem o mesmo valor')
}

Seria isso? Não tenho certeza se entendi... @-@

3 respostas

Olá, Luciana! Você está no caminho certo, mas podemos aprender algo novo sobre a comparação de tipos em JavaScript.

Em JavaScript, temos dois operadores de comparação: == e ===.

O operador == compara apenas os valores, sem levar em consideração os tipos. Então, se você comparar 1 == '1', o resultado será true, pois ele faz a coerção de tipos antes de comparar.

Já o operador === compara tanto o valor quanto o tipo. Portanto, se você comparar 1 === '1', o resultado será false, pois embora os valores sejam iguais, os tipos são diferentes (um é número e o outro é string).

Então, no seu código, você poderia usar === para comparar tanto o valor quanto o tipo. Ficaria assim:

let numeroUm = 1
let stringUm = '1'
let numeroTrinta = 30
let stringTrinta = '30'
let numeroDez = 10
let stringDez = '10'

if (numeroUm == stringUm) {
  console.log('As variáveis numeroUm e stringUm tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroUm e stringUm não tem o mesmo valor')
}

if (numeroTrinta === stringTrinta) {
  console.log('As variáveis numeroTrinta e stringTrinta tem o mesmo valor e mesmo tipo')
} else {
  console.log('As variáveis numeroTrinta e stringTrinta não tem o mesmo tipo')
}

if (numeroDez == stringDez) {
  console.log('As variáveis numeroDez e stringDez tem o mesmo valor, mas tipos diferentes')
} else {
  console.log('As variáveis numeroDez e stringDez não tem o mesmo valor')
}

Lembrando que essa é uma solução na qual eu pensei, mas existem diferentes formas de resolver.

Espero ter ajudado! Pra qualquer outra dúvida, me coloco à disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Ah, muito obrigada Raffa! O que não entendi é porque o unico que ficaria como === seria o numero/stringTrinta, consegue me orientar?

Oi Luciana!

Pelo que percebi do exercício, é pedido que as impressões do console façam sentido de acordo com os valores das variáveis. Quando testamos o código que você apresentou primeiro, ele é executado corretamente e temos o seguinte resultado no console:

As variáveis numeroUm e stringUm tem o mesmo valor, mas tipos diferentes

As variáveis numeroTrinta e stringTrinta tem o mesmo valor e mesmo tipo

As variáveis numeroDez e stringDez tem o mesmo valor, mas tipos diferentes

Perceba que as afirmações estão corretas, exceto a do meio, que diz que numeroTrinta e stringTrinta tem o mesmo valor e mesmo tipo, o que não é verdade, já que numeroTrinta recebe um valor inteiro(30) e stringTrinta recebe um valor do tipo string('30'). A linha de raciocínio que segui foi a de adicionar a verificação de tipos nessa condicional do meio para que todas as afirmações impressas no console sejam corretas e obtenhamos o seguinte resultado:

As variáveis numeroUm e stringUm tem o mesmo valor, mas tipos diferentes

As variáveis numeroTrinta e stringTrinta não tem o mesmo tipo

As variáveis numeroDez e stringDez tem o mesmo valor, mas tipos diferentes

Assim, repare que a primeira e última comparações estão avaliando prioritariamente a semelhança de valor das variáveis, enquanto só a do meio prioriza tipo.

Espero muito que tenha conseguido esclarecer sua dúvida. Caso ainda precise de mais algum esclarecimento, estou por aqui :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!