| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Invalid_array_length | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Die JavaScript-Ausnahme "Ungltige Array-Lnge" tritt auf, wenn eine Array-Lnge angegeben wird, die entweder negativ, eine Fliekommazahl ist oder das maximal von der Plattform untersttzte Limit berschreitet (d.h. beim Erstellen eines Array oder ArrayBuffer, oder beim Setzen der length-Eigenschaft).
Die maximal zulssige Array-Lnge hngt von der Plattform, dem Browser und der Browserversion ab.
Fr ein Array betrgt die maximale Lnge 232-1.
Fr ein ArrayBuffer betrgt das Maximum 231-1 (2GiB-1) auf 32-Bit-Systemen.
Ab Firefox Version 89 ist der Maximalwert von ArrayBuffer 233 (8GiB) auf 64-Bit-Systemen.
Hinweis:
Array und ArrayBuffer sind unabhngige Datenstrukturen (die Implementierung der einen beeinflusst die andere nicht).
RangeError: invalid array length (V8-based & Firefox) RangeError: Array size is not a small enough positive integer. (Safari) RangeError: Invalid array buffer length (V8-based) RangeError: length too large (Safari)
RangeError
Der Fehler kann auftreten, wenn versucht wird, ein Array oder ArrayBuffer mit einer ungltigen Lnge zu erzeugen, was Folgendes einschliet:
length-Eigenschaft.length-Eigenschaft. (Der ArrayBuffer-Konstruktor zwingt die Lnge zu einem Integer, der Array-Konstruktor hingegen nicht.)ArrayBuffer betrgt die maximale Lnge 231-1 (2GiB-1) auf 32-Bit-Systemen oder 233 (8GiB) auf 64-Bit-Systemen. Dies kann ber den Konstruktor, das Setzen der length-Eigenschaft oder durch Array-Methoden, die implizit die Lnge setzen (wie push und concat), geschehen.Wenn Sie ein Array mit dem Konstruktor erstellen, mchten Sie wahrscheinlich stattdessen die Schreibweise mit Literalen verwenden, da das erste Argument als Lnge des Array interpretiert wird. Andernfalls sollten Sie die Lnge begrenzen, bevor Sie die Lnge setzen oder sie als Argument des Konstruktors verwenden.
new Array(2 ** 40);
new Array(-1);
new ArrayBuffer(2 ** 32); // 32-bit system
new ArrayBuffer(-1);
const a = [];
a.length -= 1; // set the length property to -1
const b = new Array(2 ** 32 - 1);
b.length += 1; // set the length property to 2^32
b.length = 2.5; // set the length property to a floating-point number
const c = new Array(2.5); // pass a floating-point number
// Concurrent modification that accidentally grows the array infinitely
const arr = [1, 2, 3];
for (const e of arr) {
arr.push(e * 10);
}
[2 ** 40]; // [ 1099511627776 ]
[-1]; // [ -1 ]
new ArrayBuffer(2 ** 31 - 1);
new ArrayBuffer(2 ** 33); // 64-bit systems after Firefox 89
new ArrayBuffer(0);
const a = [];
a.length = Math.max(0, a.length - 1);
const b = new Array(2 ** 32 - 1);
b.length = Math.min(0xffffffff, b.length + 1);
// 0xffffffff is the hexadecimal notation for 2^32 - 1
// which can also be written as (-1 >>> 0)
b.length = 3;
const c = new Array(3);
// Because array methods save the length before iterating, it is safe to grow
// the array during iteration
const arr = [1, 2, 3];
arr.forEach((e) => arr.push(e * 10));
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |