| [ 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 Gleitkommazahl oder grer als das vom System untersttzte Maximum ist (d.h. beim Erstellen eines Array oder ArrayBuffer, oder beim Festlegen der length Eigenschaft).
Die maximal zulssige Array-Lnge hngt von der Plattform, dem Browser und der Browserversion ab. Fr Array betrgt die maximale Lnge 232-1. Fr ArrayBuffer betrgt das Maximum 231-1 (2GiB-1) auf 32-Bit-Systemen. Ab Firefox Version 89 betrgt 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 erstellen, welche folgende umfasst:
length Eigenschaft.length Eigenschaft. (Der ArrayBuffer-Konstruktor zwingt die Lnge zu einer Ganzzahl, aber der Array-Konstruktor 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 Array-Methoden geschehen, die implizit die Lnge setzen (wie push und concat).Wenn Sie ein Array mithilfe des Konstruktors erstellen, mchten Sie wahrscheinlich stattdessen die Literalschreibweise verwenden, da das erste Argument als Lnge des Array interpretiert wird. Andernfalls mchten Sie mglicherweise die Lnge begrenzen, bevor Sie die length-Eigenschaft festlegen 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 |