Auge: Konstanten

Beitrag lesen

Hallo

Meine Fresse! Deine Antworten sind wieder einmal mehrere eigene Wiki-Artikel.

Naja, nicht wirklich. Im Wiki würde ich das Ganze wohl noch etwas detaillierter beschreiben.

Zumindest ist es hier so detailliert, dass es bei mir Verwirrung stiftete.

Offensichtlich bin ich einer Fehlinterpretation des Begriffs const aufgesessen. Es handelt sich zwar um eine Konstante, sie ist aber über die erneute Deklaration änderbar. Das ist ein anderes Verhalten als bei PHP, wo eine Konstante, wenn sie einmal gesetzt und mit einem Wert versehen wurde, bis zum Ende des Skriptlaufs unveränderbar ist.

… soweit ich das beurteilen kann, haben Konstanten in PHP und JavaScript, von der Syntax einmal abgesehen, nicht viele Gemeinsamkeiten.

Offensichtlich mehr oder minder. Hat eine Konstante in PHP einen Wert, hat sie ihn unveränderlich bis zum Ende der Ausführung des Skripts. Soweit stimmen die Konztepte überein. Allerdings lässt sich – zumindest gilt das für dien klassische Methode, also nicht die klassenbezugene Deklaration in einem Namespace – eine Konstante in PHP nicht redeklarieren, was gemäß deiner Beispiele in JavaScript möglich ist.

Das würde jedenfalls erklären, weshalb du bei der Ansicht des zitierten Codebeispiels von mir zu der Schlussfolgerung gekommen bist, es würde eine einmal deklarierte Konstante geändert, denn nach den Regeln von PHP (von dem Erfordernnis const im globalen Scope zu notieren einmal abgesehen) würde hier tatsächlich dieselbe Konstante redeklariert, da diese grundsätzlich programmweit sichtbar wäre.

Das erneute Deklarieren der Konstante hat mich nicht so sehr verwundert. Es war eher das Konzept, einen grundsätzlich veränderlichen Wert in eine Konstante zu packen, wobei ich von PHPs Konzept der Konstante als global erreichbarem Bezeichner/Wert ausgegangen bin [1]. Das hat ja nicht nur den Vorteil der Erreichbarkeit von überall, sondern auch den Nachteil der Erreichbarkeit von überall. Der eingeschränkte Gültigkeitsbereich der Funktion war mir ja nicht bewusst. Zudem gilt die Verwendung von Konstanten für solchen Fitzelkram™ in PHP in vielen Situationen als mit Kanonen auf Spatzen geschossen. Und da fragte ich mich eben, warum du denn nicht einfach eine Variable benutztest.

[Exception bei Mehrfachdeklaration im selben Kontext]

Das … gilt … auch für die mehrfache Deklaration einer Konstanten innerhalb desselben Gültigkeitsbereichs, mit dem Unterschied, dass die Ausnahme hier nicht erst geworfen wird, wenn der Programmfluss den Zuweisungsausdruck erreicht.

Wird also beim Parsen irgendwo im Quelltext eine illegale mehrfach-Deklaration einer Konstante erkannt, wird das Programm sofort terminiert.

Hmm, so unterschiedlich scheinen die Konzepte doch nicht zu sein. Denn das Gleiche gilt in PHP für global deklarierte Konstanten als auch für die Mehrfachdeklaration innerhalb eines Namensraums.

Schließlich sei noch darauf hingewiesen, dass im Gegensatz zu PHP, in JavaScript nicht nur skalare Werte und Arrays als Wert einer Konstanten erlaubt sind. Hier kann einer Konstanten jeder Wert (und Ausdruck) zugewiesen werden, …

Wobei der geneigte Leser beachten mag, dass ein Array als Wert einer Konstante erst ab/bei PHP7 möglich sind.

Tschö, Auge

--
Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
Jan Koum, Mitgründer von WhatsApp, im Heise.de-Interview

  1. Ich meine die klassische Definition der Konstante abseits der Definition innerhalb des Namensraums einer Klasse. ↩︎

0 49

Regel in CSS Klasse ändern

Blumentopf
  • css
  • javascript
  1. 1
    Auge
    1. 0
      Gunnar Bittersmann
  2. 0
    Matthias Apsel
    • css
    • jsp
    1. 0
      Auge
      • css
      • javascript
      1. 0
        Matthias Apsel
        1. 0
          Auge
          • sprache
    2. 0
      Matthias Apsel
      1. 0
        Gunnar Bittersmann
        • css
        1. 0
          Matthias Apsel
          1. 0
            Gunnar Bittersmann
  3. 0
    Blumentopf
    1. 0
      Auge
      • css
      • html
      • javascript
      1. 0
        Blumentopf
        1. 0
          Auge
          1. 0
            Blumentopf
            1. 0
              Matthias Apsel
            2. 0
              Auge
              1. 0
                Blumentopf
              2. 0
                Orlok
                1. 0
                  Auge
                  1. 0

                    "Funktion" im Alltag

                    Der Martin
                    • sonstiges
                    1. 0
                      Auge
                      • menschelei
                      • sonstiges
                      1. 0
                        Der Martin
                        1. 0
                          Auge
                          1. 0
                            Der Martin
                    2. 0
                      Tabellenkalk
                      1. 0
                        Der Martin
                    3. 0
                      Der Martin
                      1. 1
                        JürgenB
                        • menschelei
                        • sonstiges
                        1. 0
                          Der Martin
                          1. 0
                            JürgenB
                            1. 0
                              Der Martin
                  2. 4

                    Arraymethoden und anonyme Funktionen

                    Orlok
                    • javascript
                  3. 2

                    const let var

                    Orlok
                    • javascript
                    1. 3
                      Orlok
                    2. 0
                      Auge
                      1. 1

                        Konstanten

                        Orlok
                        • javascript
                        • php
                        1. 0
                          Auge
    2. 0
      Gunnar Bittersmann
      • css
      • internationalisierung
      • javascript
      1. 0
        Gunnar Bittersmann
      2. 0
        Blumentopf
        1. 0
          Der Martin
          1. 0
            Blumentopf
            1. 0
              Der Martin
        2. 0
          Matthias Apsel
          1. 0
            Blumentopf
            1. 0
              Matthias Apsel
        3. 0
          Gunnar Bittersmann