Functional Logic & Control Flow

Variable/identifier shadowing

Last updated: 4 Mar 2026

Definition

A local identifier hides an outer one, leading to reads/writes on the wrong variable.

How to fix Variable/identifier shadowing?

Enable linter rules (no-shadow); rename conflicting vars; reduce scope; prefer small functions to avoid ambiguous contexts

Symptoms

Observable signs that may indicate Variable/identifier shadowing:

  • Assignments have no effect outside block scope.
  • Unexpected value read due to inner variable masking outer one.
  • Linters warn about shadowed variables.

Example Errors:

  • ESLint: 'result' is already declared in the upper scope.
  • Shadowed variable 'config'
  • TypeScript: Block-scoped variable used before declaration