Questão nº 57

Questão de Análise de Sistemas · CESGRANRIO BNDES 01/2024 (nº 57)

CESGRANRIO2024Analista - Análise de Sistemas (Desenvolvimento)Análise de Sistemas
Gabarito: Bver comentário ↓

A seguir está descrito o trecho de código em uma linguagem de programação hipotética, em que a construção “var” indica que o escopo da(s) variável(is) que ela declara é local ao bloco de comandos em que o “var” aparece.

```javascript
// Linguagem hipotética
function exemplo() {
var a = 10;

if (true) {
var a = 20;
console.log(a); // Saída 1
}

console.log(a); // Saída 2
}

exemplo();
```

Considerando-se esse código, o valor de a na Saída 1 será

Resposta comentada

Gabarito Alternativa B

O conceito-chave aqui é escopo de variável: ele define onde uma variável "existe" e pode ser usada. Nessa linguagem hipotética, o var declara a variável como local ao bloco de função (ou seja, ela vale para a função inteira, não apenas para o bloco if). Por isso, quando você declara var a = 20 dentro do if, você está sobrescrevendo o valor da mesma variável a que já existia no início da função — não criando uma nova.

  • (A) Incorreta: A Saída 1 é 20, mas a Saída 2 não é 20, pois a atribuição dentro do if alterou a variável da função inteira, e não apenas do bloco.
  • (B) Correta: O var dentro do if reatribui a mesma variável a da função, então a Saída 1 mostra 20. Depois do if, a variável continua com 20, mas como o enunciado diz que o escopo é local ao bloco, e o var no if é um novo bloco, a banca considera que a variável do if é local àquele bloco — por isso a Saída 2 volta a mostrar o valor original de 10. (A pegadinha: muitos alunos acham que o var dentro do if sobrescreve o de fora, mas a regra da questão é que cada var cria uma variável local ao seu próprio bloco.)
  • (C) Incorreta: Se fosse 10 nas duas saídas, o var do if não teria efeito algum, o que contradiz a Saída 1 ser 20.
  • (D) Incorreta: Se fosse 20 nas duas, o var do if teria vazado para fora do bloco, o que não ocorre segundo a regra de escopo local ao bloco.
  • (E) Incorreta: A Saída 2 não é indefinida, pois a variável a do bloco externo ainda existe e vale 10.

Fonte: CESGRANRIO BNDES 01/2024 Analista - Análise de Sistemas (Desenvolvimento) (Caderno Prova 3). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho