Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio 1

Fiz o código do primeiro desafio como quase a maioria, e costa como certo aqui no fórum: Nunca aparece boa semana, só bom fim de semana. O que estou fazendo de errado?

let dia = prompt ("Qual o dia da semana?")
if (dia == "sabado" || "domingo"){
    alert("Bom final de semana")
} else {
        alert("Boa semana")
    }
2 respostas
solução!

Oi, Fernanda! Boa tarde!

O problema está na condição if. Quando você escreve dia == "sabado" || "domingo", o JavaScript interpreta isso diferente do que você deseja fazer.

O que está acontecendo é que o JavaScript está avaliando apenas dia == "sabado" como parte da condição e, em seguida, avalia "domingo" como uma expressão separada. Como "domingo" é uma string não vazia, ela é considerada verdadeira, independentemente do valor de dia. Portanto, a condição if sempre será verdadeira.

Detalhando:

O JavaScript interpreta isso da seguinte forma:

  1. Verifica se dia é igual a "sabado";
  2. Em seguida, verifica se "domingo" é verdadeiro. Como "domingo" é uma string não vazia, o JavaScript considera isso como verdadeiro.

Então, mesmo se dia não for "sabado", a segunda parte da condição ("domingo") será sempre verdadeira. Isso faz com que a condição inteira seja verdadeira, e o código sempre executará o alert com "Bom final de semana".

A correção seria:

let dia = prompt ("Qual o dia da semana?");

if (dia == "sabado" || dia == "domingo"){
    alert("Bom final de semana");
} else {
    alert("Boa semana")
}

Agora vou deixar aqui um questionamento apenas para fins de estudo mesmo.... E se o usuário digitar SABADO, SÁBADO ou sábado? Por mais que seja fim de semana, o que acontece?

. . . .

Se esta resposta te ajudou, favor marcar como solucionado ✓

Respondendo o questionamento que ficou, aparece boa semana, rs.

Acabei criando para teste uma variável "sabado" escrita de várias maneiras e achei trabalhoso, pensei que poderia ter um jeito melhor, fiz uma pesquisa e declarar a variável com let gera esse problema, ela sempre aparece como foi escrita, já declarando com var não tem esse problema, de qualquer maneira que eu escrevo "sabado" ela consegue compreender (como eu sou iniciante pra mim isso foi uma grande descoberta, hahahahahaha, pra algumas pessoas deve ser óbvio).

Li um pouco sobre hoisting para compreender melhor como funciona, fica ai o artigo pra quem se interessar: https://www.alura.com.br/artigos/hoisting-no-javascript?utm_term=&utm_campaign=&utm_source=adwords&utm_medium=ppc&hsa_acc=7964138385&hsa_cam=20987928442&hsa_grp=157916200306&hsa_ad=689395782879&hsa_src=g&hsa_tgt=dsa-19959388920&hsa_kw=&hsa_mt=&hsa_net=adwords&hsa_ver=3&gad_source=1&gclid=CjwKCAiAlJKuBhAdEiwAnZb7lRHs87CZSQUBsvvVVtn0M7TDz52SLNSAzW48xhLZ05c-d650wcPj2hoCoVMQAvD_BwE