strekking

Scope bij programmeren is de ruimte in code waar een variabele zowel gedefinieerd als zichtbaar is. Scope onderscheidt regio’s van een programma en de manier waarop het programma variabelen definieert en gebruikt. Als een variabele een specifieke definitie heeft in het hele programma, ongeacht de functie waarin deze voorkomt, is het bereik globaal. Variabelen met een globaal bereik zijn in alle broncode hetzelfde. Daarentegen definieert de lokale scope een variabele voor een bepaalde functie; het bestaat alleen binnen die functie.

De definitie van scope is een beetje misleidend; het verwijst ook naar hoe een variabele functioneert binnen een programma, niet alleen naar het gebied waarin de variabele definieerbaar en zichtbaar is. De term scope geeft alleen het bestreken gebied aan, niet de uitgevoerde actie; onderzoekers en ontwikkelaars begrijpen de beperkingen van de term en begrijpen dat reikwijdte zowel de definitie als het gedrag van een variabele betekent.

Statisch vs. dynamisch bereik

Statisch (lexicaal) en dynamisch bereik zijn twee soorten bereik die voorkomen bij het programmeren; statisch komt verreweg het meest voor. Als een programma statisch of lexicaal scopes, retourneert een variabele binnen een functie de toegewezen waarde voor dat bereik wanneer die functie wordt uitgevoerd. Als bijvoorbeeld een variabele x = 5 in een bepaalde functie, en een daaropvolgende voorwaardelijke definitie voor x ook wordt gegeven, x = 5 waar de scope van het programma het ook als zodanig definieert.

Dynamisch bereik roept echter de meest recente definitie van die variabele aan, ongeacht de structuur van het programma. In het bovenstaande voorbeeld, als x = 5 maar toen x later werd gedefinieerd met een waarde van 10, zou een programma met een dynamisch bereik x = 10 aanroepen als die waarde voor het laatst was gebruikt. Dynamisch bereik is minder gestructureerd dan statisch bereik; het haalt variabeldefinities uit de call-stack in plaats van het gebied waarin het logisch zou worden gedefinieerd.