Eu compreendi a proposta do exercício, de ensinar que deve-se utilizar ==
para igual e =
para atribuição (recebe), mas não compreendi exatamente como funciona esse comportamento de uma atribuição como condição de if, e o porquê de dar sempre true
.
Seria o caso de que na verdade a condição é lida e executada como se de fato fosse uma atribuição? Então, como a atribuição ocorreu normalmente, leu-se true
?
Ou seria o caso de que o programa verificou e atestou que realmente essa atribuição aconteceu em algum momento, lendo-a, de fato, como uma condição para algo? Nesse caso, o true
não faria sentido, porque essa atribuição não aconteceu antes no programa.
Ou ainda o caso seria de que na verdade a condição é nula, e o if() entende que precisa executar o que quer que esteja no bloco, porque nenhuma condição foi determinada? Como a condição não seria de fato uma condição, o programa entende que precisa executar sempre o que quer que esteja no bloco, porque a condição é nula?
E ainda: Quando atribuímos um valor a uma variável ou o valor de uma variável a outra variável, isso é lido, mesmo dentro da condição de if(), como uma atribuição que está sendo executada ali, naquele momento, e passará a valer a partir de então? Ou seja, o novo valor da primeira variável será o valor que for determinado na atribuição? Seria o mesmo que fazer a atribuição fora do campo de condição de if()?
<meta charset="UTF-8">
<script>
function pulaLinha() {
document.write("<br>");
}
function mostra(frase) {
document.write(frase);
pulaLinha();
}
var quantidadeCarbono1 = parseInt(prompt("Quantidade de carbono substância 1"));
// exemplo
// quantidadeCarbono1 = 1
var quantidadeCarbono2 = parseInt(prompt("Quantidade de carbono substância 2"));
// exemplo
// quantidadeCarbono2 = 8
quantidadeCarbono2 = quantidadeCarbono2 + 2;
// quantidadeCarbono2 = 8 + 2
if(quantidadeCarbono1 = quantidadeCarbono2 ) {
// quantidadeCarbono1 = 10 (true?)
mostra("Acho que são substâncias parecidas");
} else {
mostra("São substâncias bem diferentes");
}
</script>