Heim > Web-Frontend > js-Tutorial > Lexikalisches vs. dynamisches Scoping: Was ist der Unterschied und warum bevorzugen wir statisches Scoping?

Lexikalisches vs. dynamisches Scoping: Was ist der Unterschied und warum bevorzugen wir statisches Scoping?

Patricia Arquette
Freigeben: 2024-12-09 16:15:15
Original
552 Leute haben es durchsucht

Lexical vs. Dynamic Scoping: What's the Difference and Why Do We Prefer Static Scoping?

Lexikalisches Scoping: Eine detaillierte Erklärung

Das Verständnis des lexikalischen Scoping kann durch Beispiele vereinfacht werden.

Lexikalisches Scoping (statischer Geltungsbereich)

Beim lexikalischen Scoping kann jede innere Ebene auf ihre äußere zugreifen Ebenen. Ein Beispiel in C-ähnlicher Syntax:

void fun() {
    int x = 5;

    void fun2() {
        printf("%d", x);
    }
}
Nach dem Login kopieren

Dynamisches Scoping

Dynamisches Scoping ermöglicht es inneren Ebenen, je nach Aufrufkette auf Variablen aus dynamisch bestimmten äußeren Bereichen zuzugreifen . Ein C-ähnliches Syntaxbeispiel:

void fun() {
    printf("%d", x);
}

void dummy1() {
    int x = 5;

    fun();
}

void dummy2() {
    int x = 10;

    fun();
}
Nach dem Login kopieren

Hier kann fun entweder von dummy1 oder dummy2 oder von jeder anderen Funktion, die fun mit darin deklariertem x aufruft, auf x zugreifen.

dummy1(); // Prints 5
dummy2(); // Prints 10
Nach dem Login kopieren

Hauptunterschiede

Statisches Scoping kann zur Kompilierungszeit bestimmt werden, während dynamisches Scoping davon abhängt in der Laufzeitaufrufkette. Dynamisches Scoping ist wie die Übergabe von Referenzen aller Variablen an die aufgerufene Funktion.

Warum statisches Scoping verwenden?

Statisches Scoping wird oft bevorzugt, weil es das Verständnis vereinfacht. Die meisten Sprachen, einschließlich Lisp, haben diesen Ansatz schließlich übernommen. Dynamisches Scoping kann zu Komplexität führen, wenn die Aufrufkette von Laufzeitbedingungen abhängt.

Das obige ist der detaillierte Inhalt vonLexikalisches vs. dynamisches Scoping: Was ist der Unterschied und warum bevorzugen wir statisches Scoping?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage