Questão de Programação — Linguagens de programação — FUNDATEC 2023
Programação›Linguagens de programação
Código
qq897150
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Desenvolvimento Front-End
Analise o código em linguagem de programação Javascript abaixo e assinale a alternativa com as saídas deste código na sequência correta.var x = 20;function multiplicar() {var x = 5;x *= 2;console.log(x);}console.log(x);multiplicar();
A10, 20
B20, 10
C10, 10
D20, 20
E20, Undefined
Revelar gabarito e comentário▾
GabaritoB — 20, 10
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
JavaScript – Escopo de variáveis
Gabarito: letra B. O código exibe primeiro 20 (valor da variável global x) e depois 10 (valor da variável local x dentro da função multiplicar). A palavra-chave var declara uma nova variável local dentro da função, que sombreia (shadow) a variável global – portanto, alterações na local não afetam a global.
Análise do código
var x = 20;: declara uma variável global x com valor 20.
A função multiplicar() declara uma nova variável local x (também com var) e a inicializa com 5. x *= 2 a torna 10. O console.log(x) dentro da função exibe 10.
O console.log(x) fora da função exibe o valor da variável global, que permanece 20.
Portanto, a sequência de saída é:
20 (primeiro console.log)
10 (segundo console.log, chamada da função)
Alternativas
Alternativa A – ❌ Incorreta
Saída: 10, 20. Troca a ordem: mostra o valor local antes do global. O console.log externo é executado antes da função, logo exibe 20 primeiro.
Alternativa B – ✅ Correta ⟵ GABARITO
Saída: 20, 10. Sequência exata: global 20, depois local 10.
Alternativa C – ❌ Incorreta
Saída: 10, 10. Indica que ambos os console.log exibem 10. Isso ocorreria se a função alterasse a variável global, mas a declaração var local cria uma variável separada.
Alternativa D – ❌ Incorreta
Saída: 20, 20. Sugere que a multiplicação x *= 2 não surtiu efeito ou que a função não foi executada. Na verdade, a função é chamada multiplicar() e exibe o valor local 10.
Alternativa E – ❌ Incorreta
Saída: 20, Undefined. Imaginaria que a variável local x não foi inicializada ou sofreu hoisting sem valor. Contudo, var x = 5; inicializa com 5; depois x *= 2 atribui 10. console.log(x) exibe 10.
PEGA ESSA DICA!
Em JavaScript, var tem escopo de função (function scope). Dentro da função, uma nova variável com o mesmo nome de uma global sombreia a global. Para modificar a variável global, deve-se omitir a declaração var, let ou const (ex.: x = 5;), ou referenciá-la como window.x no navegador. Lembre-se: var dentro de função cria uma variável local, não altera a externa.