Scope
Scope (englisch für Geltungsbereich) bezeichnet allgemein einen Bereich, in dem etwas gültig oder verfügbar ist. In der JavaScript-Programmierung meint man damit zumeist den Sichtbarkeits- bzw. Nutzbarkeitsbereich einer Variablen oder einer Funktion.
Abweichend davon verwendet das ServiceWorker-API den Begriff der Scope-URL, um festzulegen, für welche Ressourcen ein Serviceworker zuständig ist.
Inhaltsverzeichnis
Beispiele für Scope
JavaScript
JavaScript ist eine Sprache, bei der die Scope-Regeln sich je nach verwendeter Betriebsart und Ausführungsumgebung unterscheiden können. Zum Beispiel würde das folgende Script im strikten Modus nicht funktionieren.
// JavaScript
let radius = 9;
function berechne_durchmesser() {
let durchmesser;
durchmesser = 2 * radius;
global_durchmesser = durchmesser; // undeklarierte Variable wird automatisch global deklariert
}
berechne_durchmesser();
console.log(global_durchmesser); // gibt 18 aus
console.log(durchmesser);
Die Variable radius
wird im globalen Scope deklariert und ist deshalb im gesamten Skript nutzbar, die Variable durchmesser
hingegen nur innerhalb der Funktion berechne_durchmesser
. Deshalb führt die Ausgabe von durchmesser
zu einer Fehlermeldung, weil sie im globalen Scope des Scriptes ausgeführt wird und es darin keine Variable durchmesser
gibt.
Die Ausgabe von global_durchmesser
funktioniert hingegen: Diese Variable wurde nämlich nicht innerhalb von berechne_durchmesser()
deklariert, was zur Folge hat, dass JavaScript sie beim ersten Versuch einer Wertzuweisung automatisch im globalen Scope anlegt.
Im Strikten Modus hingegen würde die automatische Anlage einer globalen Variablen nicht ausgeführt. Statt dessen wird das Script mit einem Fehler abgebrochen.
Hauptartikel: JavaScript/Scope umfangreicher Hintergrundartikel zum tieferen Verständnis
Beispiel für Scope in PHP
Da PHP keinen Befehl zur Deklaration von Variablen kennt, verhält sich PHP anders. Eine bisher unbekannte Variable wird grundsätzlich in dem Scope erzeugt, in dem die Zuweisung erfolgt. Der Zugriff auf globale Variablen muss durch eine global
-Anweisung festgelegt werden:
<?php
$radius = 9;
function berechne_durchmesser() {
global $radius, $global_durchmesser;
$durchmesser = 2 * $radius;
$global_durchmesser = durchmesser;
}
berechne_durchmesser();
echo $global_durchmesser . "<br>\n";
echo $durchmesser . "<br>\n";
Da die Variable $durchmesser
nicht als global angemeldet wurde, ist sie nach dem Aufruf von berechne_durchmesser()
nicht mehr verfügbar und PHP gibt (sofern nicht unterdrückt) eine Warnmeldung aus.