Gibt es Konstanten in JavaScript?

Lesezeit: 6 Minuten

Gibt es Konstanten in JavaScript
fuentesjr

Gibt es eine Möglichkeit, Konstanten in zu verwenden? JavaScript?

Wenn nicht, was ist die gängige Praxis für die Angabe von Variablen, die als Konstanten verwendet werden?

  • Derek: Würde Ihr Try/Catch nicht den Umfang dessen begrenzen, was Sie dem Try/Catch-Block deklarieren? Wenn Sie den Umfang nicht richtig festlegen, was ist der Sinn der Angabe const oder var überhaupt?

    – Kodierer

    26. März 2013 um 10:13 Uhr

  • @Coderer in den aktuellen Implementierungen wird dies funktionieren, da const hat den gleichen Umfang wie var, und das ist Funktionsebene, nicht Blockebene. Wenn Sie stattdessen dem kommenden ECMAScript-Standard folgen, const hat den gleichen Umfang wie letwas bedeutet, dass es nicht funktionieren wird.

    – Jaspis

    22. Juli 2013 um 19:27 Uhr

  • @Coderer Falsche Sprache. Variablen in Javascript sind Funktionsumfang. Das ist nicht C.

    – doug65536

    11. September 2013 um 18:34 Uhr

  • @ Jasper Das ist bedauerlich. Ich habe meine Zweifel, dass sie tatsächlich den gesamten vorhandenen Code brechen, der const verwendet.

    – doug65536

    11. September 2013 um 18:36 Uhr

  • Ehrlich gesagt. Warum haben wir nicht const var und const let

    – cwharris

    8. Juli 2014 um 18:31 Uhr


Versuchen Sie, die Variablen vor Änderungen zu schützen? Wenn ja, dann können Sie ein Modulmuster verwenden:

var CONFIG = (function() {
     var private = {
         'MY_CONST': '1',
         'ANOTHER_CONST': '2'
     };

     return {
        get: function(name) { return private[name]; }
    };
})();

alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

CONFIG.MY_CONST = '2';
alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

CONFIG.private.MY_CONST = '2';                 // error
alert('MY_CONST: ' + CONFIG.get('MY_CONST'));  // 1

Bei diesem Ansatz können die Werte nicht geändert werden. Aber Sie müssen die Methode get() auf CONFIG 🙁 verwenden.

Wenn Sie den Variablenwert nicht streng schützen müssen, tun Sie es einfach wie vorgeschlagen und verwenden Sie eine Konvention von ALLEN GROSSBUCHSTABEN.

  • CONFIG.get = someNewFunctionThatBreaksTheCode… Alles in allem können Sie in JS absolut keine Konstanten erzwingen (ohne Schlüsselwort const). Das Einzige, was Sie tun können, ist die Sichtbarkeit einzuschränken.

    – Thomas Eding

    11. Januar 2010 um 23:20 Uhr


  • Das glaube ich private ist ein zukünftiges reserviertes Wort in JavaScript, ich würde das an deiner Stelle nicht verwenden.

    – Zaq

    5. August 2012 um 16:49 Uhr

1646261712 323 Gibt es Konstanten in JavaScript
Sam

"use strict";

var constants = Object.freeze({
    "π": 3.141592653589793 ,
    "e": 2.718281828459045 ,
    "i": Math.sqrt(-1)
});

constants.π;        // -> 3.141592653589793
constants.π = 3;    // -> TypeError: Cannot assign to read only property 'π' …
constants.π;        // -> 3.141592653589793

delete constants.π; // -> TypeError: Unable to delete property.
constants.π;        // -> 3.141592653589793

Sehen Objekt.einfrieren. Sie können verwenden const wenn du das machen willst constants Referenz auch schreibgeschützt.

  • Wenn Sie versuchen, a einen Wert zuzuweisen const, es wirft keine Fehler. Die Zuweisung schlägt einfach fehl und die Konstante hat immer noch ihren ursprünglichen Wert. Dies ist meiner Meinung nach ein großer Designfehler, aber solange es eine klare, konsistente Namenskonvention gibt (wie das beliebte ALL_CAPS), denke ich nicht, dass es zu viel Kummer verursachen würde.

    – Tyler

    29. Juni 2010 um 21:54 Uhr

IE unterstützt Konstanten, Art von, zB:

<script language="VBScript">
 Const IE_CONST = True
</script>
<script type="text/javascript">
 if (typeof TEST_CONST == 'undefined') {
    const IE_CONST = false;
 }
 alert(IE_CONST);
</script>

  • Junge, sprich über etwas, das nicht Cross-Browser ist. . . Immer noch +1, um ein bisschen über den Tellerrand hinauszudenken.

    – Tom

    26. Oktober 2009 um 19:36 Uhr

  • VBScript? Was ist das? 😉

    – tybro0103

    27. September 2013 um 4:06 Uhr


  • Ich stimme normalerweise für allgemeine Fragen zu Cross-Browsern mit einer IE-spezifischen Antwort ab. Weil ich Leute hasse, die denken, dass die IE-Javascript-Implementierung “die Eine” ist und andere einfach ignoriert werden sollten. Wer benutzt übrigens andere Browser als IE?

    – Ameise

    2. Oktober 2013 um 20:54 Uhr

  • @Cooluhuru Dieses Skript scheint sowohl IE-Browser (mit VBScript) als auch Nicht-IE-Browser (mit JavaScript) zu verarbeiten const). Können Sie erklären, was daran falsch ist?

    – Andreas Grimm

    13. Juli 2016 um 7:47 Uhr

  • Es fällt mir immer noch schwer zu akzeptieren, dass Konstanten geändert werden können.

    – Norbert Norbertson

    30. Januar 2018 um 15:46 Uhr

1646261712 323 Gibt es Konstanten in JavaScript
Sam

ECMAScript 5 führt ein Object.defineProperty:

Object.defineProperty (window,'CONSTANT',{ value : 5, writable: false });

Es ist in jedem modernen Browser unterstützt (sowie IE ≥ 9).

Siehe auch: Object.defineProperty in ES5?

  • Junge, sprich über etwas, das nicht Cross-Browser ist. . . Immer noch +1, um ein bisschen über den Tellerrand hinauszudenken.

    – Tom

    26. Oktober 2009 um 19:36 Uhr

  • VBScript? Was ist das? 😉

    – tybro0103

    27. September 2013 um 4:06 Uhr


  • Ich stimme normalerweise für allgemeine Fragen zu Cross-Browsern mit einer IE-spezifischen Antwort ab. Weil ich Leute hasse, die denken, dass die IE-Javascript-Implementierung “die Eine” ist und andere einfach ignoriert werden sollten. Wer benutzt übrigens andere Browser als IE?

    – Ameise

    2. Oktober 2013 um 20:54 Uhr

  • @Cooluhuru Dieses Skript scheint sowohl IE-Browser (mit VBScript) als auch Nicht-IE-Browser (mit JavaScript) zu verarbeiten const). Können Sie erklären, was daran falsch ist?

    – Andreas Grimm

    13. Juli 2016 um 7:47 Uhr

  • Es fällt mir immer noch schwer zu akzeptieren, dass Konstanten geändert werden können.

    – Norbert Norbertson

    30. Januar 2018 um 15:46 Uhr

1646261713 481 Gibt es Konstanten in JavaScript
Gemeinschaft

Nein, nicht generell. Firefox implementiert const aber ich weiß, dass IE nicht.


@John auf eine gängige Benennungspraxis für consts hinweist, die seit Jahren in anderen Sprachen verwendet wird, sehe ich keinen Grund, warum Sie das nicht verwenden könnten. Das bedeutet natürlich nicht, dass jemand den Wert der Variablen nicht trotzdem überschreiben wird. 🙂

  • Wie jeder weiß, wenn IE es nicht implementiert, könnte es genauso gut nicht existieren.

    – Josh Hinmann

    24. September 2008 um 22:47 Uhr

  • Leider und praktisch gesehen – es ist wahr. IE besitzt einen großen Marktanteil. Wenn ich ein Unternehmen besäße und Webanwendungen intern verwenden würde, würde ich auf FF standardisieren. Ich weiß nicht, warum sich so viele Leute für IE interessieren, es bläst.

    – Jason Bunting

    24. September 2008 um 22:50 Uhr

  • @Rich: Wer hat gesagt, dass meine Meinung Tatsache ist? Sie haben eine ziemliche Annahme gemacht. Außerdem ist für mich die Tatsache, dass der IE scheiße ist, eine Tatsache. Du kannst deine eigenen Fakten haben, ich habe nicht gesagt, dass du meinen glauben musst. 😛 Nimm ein Xanax oder so…

    – Jason Bunting

    24. September 2008 um 23:44 Uhr

  • @Rich B, ja, das war nur ein dummer Kommentar, und vertrau mir, ich würde es wissen, ich mache viele dumme Kommentare. @Jason B. – interessant, ich bin letzte Nacht auf genau dieses Problem gestoßen. const hat in FF funktioniert, aber nicht in IE. Danke für die Klarstellung

    theman_on_vista

    8. April 2009 um 13:14 Uhr

  • Wen interessiert der IE? Ich nicht! FF oder Chrome oder Opera usw. können auf fast jeder Betriebssystemplattform installiert werden. Auch Computerhändler wissen normalerweise, dass die alte IE-Version scheiße ist, also installieren sie oft (oder sogar jedes Mal) alternative Browser, bevor sie einen Computer verkaufen. Also habe ich entschieden, dass sich meine entwickelte App überhaupt nicht um inkompatible Browser kümmert: Wenn Browser-Entwickler sich um die Einhaltung von Standards kümmern, können ihre Produkte meine App verwenden, wenn nicht, werden Benutzer einen anderen Browser verwenden … Ich kann damit leben; -) Aber kann Microsoft damit leben, einen Teil des Marktes zu verlieren? Nein, das können sie nicht, also werden “Sie” ihre Entwicklerpolitik ändern!

    – willy wonka

    4. Januar 2017 um 8:04 Uhr

916990cookie-checkGibt es Konstanten in JavaScript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy