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

[Dúvida] Duvida sobre o desafo

Uma dúvda sobre esse desafo da luri:

Luis é apaixonado por tecnologia e está dando seus primeiros passos no mundo da programação. Para praticar lógica de programação, ele decidiu desenvolver um sistema de login de usuário único em que é necessário apenas informar a senha para ver o conteúdo do restante do projeto.

No entanto, ao testar o seu projeto, percebeu que não importava a senha passada para o sistema, o acesso sempre era permitido.

Sabendo que você também está estudando lógica de programação, Luis pediu sua ajuda para que vocês consigam encontrar o bug juntos. Para isso, ele disponibilizou o código que escreveu:

let senhaDoSistema = "senhaTeste!";

let senha = prompt("Digite a senha do sistema:");

if (senha = senhaDoSistema){ alert("Acesso ao sistema garantido"); }

De acordo com o código disponibilizado, qual é o problema?

Quera saber se minha resposta está correta:

Acho que o problema está na condiçao(IF), ele nao está comparando os valores armazenados nas variaveis , deveriia ter colocado == . Mais aiinda nao compreendi por que exatamente o acesso sempre é permitido, é porque no IF a senha esta recebendo o valor da senha do sistema? se for isso toda vez que ele der o ok dentro do programa a senha que ele digitou é trocada pela senha do sistema, estou certo?

2 respostas
solução!

Sim, você está absolutamente correto! O problema está na condição if. A expressão = é um operador de atribuição, não de comparação. Portanto, em vez de verificar se as duas strings são iguais, o código está atribuindo o valor da senha do sistema à variável senha.

Ao corrigir isso para o operador de comparação == ou ===, o código funcionará corretamente, comparando a senha fornecida pelo usuário com a senha armazenada no sistema.

A razão pela qual o acesso sempre é permitido é que a expressão senha = senhaDoSistema é avaliada como verdadeira sempre que a senha do sistema é atribuída à variável senha. Então, basicamente, o código está dizendo "sempre que eu atribuir a senha do sistema à variável senha, permita o acesso". Isso ocorre porque a atribuição é uma operação que retorna o valor atribuído, que neste caso é a senha do sistema.

Entendi, obrigado!