Em JavaScript, os operadores lógicos efetuam álgebra booleana e são frequentemente usados em conjunto com os operadores relacionais para combinar duas expressões relacionais em outra mais complexa. Considerando o uso de operadores, em relação ao código a seguir, assinale a afirmativa correta. if ( x == y ) stop () ; ( x == y ) && stop () ;
- A)As duas linhas do código têm efeitos distintos.
Errada, porque as duas formas podem produzir o mesmo efeito prático quando usadas para executar uma função condicionalmente.
- B)As duas linhas do código têm efeitos equivalentes.
Correta, pois ambas chamam stop() somente quando x == y é verdadeiro.
- C)Na linha 1, o operador == não pode ser usado em uma estrutura condicional. O correto é usar o operador =.
Errada, porque == é operador de comparação e é exatamente o apropriado em uma condição.
- D)Na linha 2, o operador && foi inserido em uma posição incorreta, pois ele não pode avaliar o operando de seu lado direito, apenas do seu lado esquerdo.
Errada, porque o && pode sim avaliar o operando da direita, desde que o da esquerda seja verdadeiro.
Gabarito: B
Em JavaScript, o operador lógico && faz o famoso "curto-circuito": ele avalia a expressão da esquerda e, se ela for verdadeira, então avalia a da direita. Por isso, quando você escreve (x == y) && stop(), está dizendo, na prática, a mesma coisa que "se x for igual a y, execute stop()". Na linha 1, o if também faz exatamente isso: testa a condição e, se ela for verdadeira, executa stop(). Já na linha 2, o && aparece como uma forma mais enxuta de escrever o mesmo comportamento. Isso é comum em JavaScript e aparece muito em códigos compactos. Repare que o operador == está sendo usado corretamente para comparação, não para atribuição. E o && não está "invertido" nem limitado ao lado esquerdo: ele pode sim avaliar o lado direito, mas só depois que o lado esquerdo permitir. É aí que mora a lógica do curto-circuito. Então, o gabarito B está correto porque as duas linhas produzem o mesmo efeito prático: se x == y, a função stop() é chamada; se não, nada acontece. Em provas, a banca gosta muito de testar essa equivalência entre if e expressões lógicas curtas.