Maximale Länge eines Literals
hotti
- javascript
0 Alexander (HH)0 hotti0 Alexander (HH)0 hotti
hi,
in einer function habe ich:
this.data = '%data%';
wobei %data% für einen Platzhalter steht, der über meine Templateengine mit einem sehr langen String belegt wird. Nach dem Ausliefern der Datei steht da also ein Literal. Bisherige Tests mit Stringlängen von knapp 1MB funktionieren, aber ich wüsste schon gerne, wo da die Grenzen sind.
Gibt es eine Grenze?
Horst
Moin Moin!
in einer function habe ich:
this.data = '%data%';
wobei %data% für einen Platzhalter steht, der über meine Templateengine mit einem sehr langen String belegt wird. Nach dem Ausliefern der Datei steht da also ein Literal. Bisherige Tests mit Stringlängen von knapp 1MB funktionieren, aber ich wüsste schon gerne, wo da die Grenzen sind.
Gibt es eine Grenze?
Naja, spätestens wenn RAM und Swap voll sind, ist Schluß, egal was irgendwelche Spezifikationen sagen. Vermutlich wird bei heutigen Bandbreiten vorher die Lust verlieren.
Hast Du übrigens mal in die Spezifikationen geschaut? Was hast Du dort gefunden?
Alexander
Hast Du übrigens mal in die Spezifikationen geschaut? Was hast Du dort gefunden?
Ich habe die Spezifikationen nicht gefunden. Deswegen habe ich hier gefragt ;)
Moin Moin!
Hast Du übrigens mal in die Spezifikationen geschaut? Was hast Du dort gefunden?
Ich habe die Spezifikationen nicht gefunden. Deswegen habe ich hier gefragt ;)
Dann ist Deine Suchmaschine oder Dein Recherche-Vorgehen reichlich kaputt. Ich tippe auf letzteres, denn:
Google schmeißt bei der Suche nach javascript spezifikation als ERSTES Ergebnis ECMA-262 aus. Das zweite Suchergebnis führt zum Mozilla-Projekt, dort definiert man Javascript als Superset von ECMA-262. Das dritte Suchergebnis führt zu einer (noch nicht fertiggestellten) Dokumentation von molily, wo die ganze Standardisierung von JS aufgedröselt und auch wieder auf ECMA-262 verwiesen wird. Treffer vier ist die der Artikel zu Javascript in der deutschen Wikipedia, und Nummer fünf eine Verfeinerung der WhatWG, beide referenzieren wiederum ECMA-262.
Bing sieht das sehr ähnlich, ebenso Metager und Yahoo.
In ECMA-262 sind keine expliziten Längenbeschränkungen zu finden, ein String Literal ist definiert als "zero or more characters enclosed in single or double quotes" (7.8.4 String Literals). Danach wären auch Terabyte große String-Literals möglich.
In der Spec wird allerdings sehr oft mit 32-Bit-Integern (gerne auch signed) herumgefummelt (eben weil wohl fast alle JS-Implementationen mit 32-Bit-Integern arbeiten), deswegen würde ich mich nicht darauf verlassen, dass Strings mit mehr als 2^31 Zeichen (in ECMA-262 als 16-Bit-Integer definiert, d.h. UTF-16) oder auch nur mit mehr 2^31 Bytes unterstützt werden.
Alexander
In ECMA-262 sind keine expliziten Längenbeschränkungen zu finden, ein String Literal ist definiert als "zero or more characters enclosed in single or double quotes" (7.8.4 String Literals). Danach wären auch Terabyte große String-Literals möglich.
Danke!