[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/Invalid_array_length [Back]  [Original]

RangeError: ungltige Array-Lnge - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

RangeError: ungltige Array-Lnge

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).

In diesem Artikel

Nachricht

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)

Fehlerart

RangeError

Was ist schief gelaufen?

Der Fehler kann auftreten, wenn versucht wird, ein Array oder ArrayBuffer mit einer ungltigen Lnge zu erstellen, welche folgende umfasst:

  • Negative Lnge, ber den Konstruktor oder das Setzen der length Eigenschaft.
  • Nicht-ganzzahlige Lnge, ber den Konstruktor oder das Setzen der length Eigenschaft. (Der ArrayBuffer-Konstruktor zwingt die Lnge zu einer Ganzzahl, aber der Array-Konstruktor nicht.)
  • berschreitung der auf der Plattform untersttzten maximalen Lnge. Fr Arrays betrgt die maximale Lnge 232-1. Fr 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.

Beispiele

Ungltige Flle

js
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);
}

Gltige Flle

js
[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));

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page