Fundamentos · unidade 4 de 27
Escopo léxico
Saber onde um valor vive importa tanto quanto o valor.
01 / 07Use as setas do teclado ou deslize
Leitura
Var, let, const, TDZ e shadowing explicados pelo impacto real que causam no estado da aplicação.
No backend, esse fundamento aparece quando o código transforma entrada em decisão. O detalhe de linguagem deixa de ser acadêmico no momento em que altera um payload, uma regra de negócio ou a forma como uma falha chega à camada seguinte.
A forma mais útil de estudar é ligar a sintaxe a um contrato observável: o que entra, o que pode mudar, qual resultado sai e qual erro deve continuar o fluxo. É esse raciocínio que os exemplos e exercícios desta unidade procuram treinar.
Código
if (ok) {
var status = "ready"
}
// status continua acessívelO que fica
- Var tem escopo de função; let e const, de bloco.
- Const impede reatribuição, não mutação.
- Nomes repetidos em escopos diferentes podem esconder intenção.
Prática guiada.Leia, rode, quebre e explique cada exercício.
Prática guiada / unidade 04
Um problema de cada vez.
Leia o contrato, escreva sua tentativa e confira os casos esperados. A resolução de referência permanece visível ao final de cada exercício.
sumUsingBlockScope(a, b)
01 / Entenda
Enunciado
calcule a soma usando um let
declarado dentro de um bloco { } interno (uma variável intermediária
que não precisa existir fora dali) e retorne o resultado.
02 / Implemente
Sua tentativa
Comece pela assinatura e resolva sem olhar a resposta.
function sumUsingBlockScope(a, b) {
// Escreva sua solução aqui.
}03 / Preveja
Entrada e saída
Use estes exemplos para entender o contrato antes de programar.
Entrada / chamada
sumUsingBlockScope(2, 3)Retorno esperado
5Entrada / chamada
sumUsingBlockScope(-1, 1)Retorno esperado
004 / Teste
Prove que funciona
O teste chama sua função e compara o resultado real com o esperado.
Como utilizar este teste
- 01Implemente a função usando exatamente o nome e os parâmetros do enunciado.
- 02Salve sua implementação em
exercises.js, na mesma pasta do teste. - 03Abra o terminal nessa pasta e execute o comando abaixo.
- 04Se falhar, compare “esperado” com “recebido”; essa diferença mostra o caso que precisa ser corrigido.
node --test --test-name-pattern="sumUsingBlockScope" exercises.test.jsComportamentos cobertos
- soma dois números
Ver código completo do teste
test("sumUsingBlockScope: soma dois números", () => {
assert.equal(sumUsingBlockScope(2, 3), 5);
assert.equal(sumUsingBlockScope(-1, 1), 0);
});05 / Compare
Resolução
function sumUsingBlockScope(a, b) {
let result;
{
let sum = a + b;
result = sum;
}
return result;
}