Rozsah v programování je prostor v kódu, kde je proměnná definována i viditelná. Rozsah rozlišuje oblasti programu a způsob, jakým program definuje a používá proměnné. Pokud má proměnná v celém programu jednu konkrétní definici, bez ohledu na funkci, ve které se objeví, je její rozsah globální. Globálně proměnné jsou stejné ve všech zdrojových kódech. Naproti tomu místní obor definuje proměnnou pro jednu konkrétní funkci; existuje pouze v rámci této funkce.
Definice rozsahu je trochu zavádějící; odkazuje také na to, jak proměnná funguje v programu, nejen na oblast, ve které je proměnná definovatelná a viditelná. Termín rozsah označuje pouze pokrytou oblast, nikoli provedenou akci; vědci a vývojáři chápou omezení tohoto pojmu a chápou, že rozsah znamená definici i chování proměnné.
Statický vs. dynamický rozsah
Statický (lexikální) a dynamický rozsah jsou dva druhy rozsahu, které se vyskytují v programování; statické je zdaleka častější. Pokud program obejde staticky nebo lexikálně, proměnná v rámci funkce vrátí svoji přiřazenou hodnotu pro tento obor, kdykoli se tato funkce spustí. Například pokud je v dané funkci k dispozici také proměnná x = 5 a následná podmíněná definice pro x, x = 5 všude tam, kde to program definuje jako takový.
Dynamický rozsah však volá nejnovější definici této proměnné bez ohledu na strukturu programu. Ve výše uvedeném příkladu, pokud x = 5, ale pak x bylo později definováno s hodnotou 10, program s dynamickým rozsahem by zavolal x = 10, pokud byla tato hodnota naposledy použita. Dynamický rozsah je méně strukturovaný než statický rozsah; načte definice proměnných ze zásobníku volání namísto oblasti, ve které by byla logicky definována.