Scope

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

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.

Beispiele für Scope

Beachten Sie: Die Regeln für die Bildung von Scopes sind in den Programmiersprachen nicht einheitlich. Bitte arbeiten Sie deshalb die Dokumentation der von Ihnen verwendeten Sprache aufmerksam durch, um Programmfehler wegen falsch verstandenen Scope-Regeln zu vermeiden.

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.

Variablenscopes in JavaScript
// 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:

Variablenscopes in PHP
<?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.

Siehe auch