Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. JavaScript-Fehlerreferenz
  5. RangeError: ungültige Array-Länge

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

View in EnglishAlways switch to English

RangeError: ungültige Array-Länge

Die JavaScript-Ausnahme „Ungültige Array-Länge“ tritt auf, wenn eine Array-Länge angegeben wird, die entweder negativ, eine Gleitkommazahl oder größer als das vom System unterstützte Maximum ist (d.h. beim Erstellen einesArray oderArrayBuffer, oder beim Festlegen derlength Eigenschaft).

Die maximal zulässige Array-Länge hängt von der Plattform, dem Browser und der Browserversion ab. FürArray beträgt die maximale Länge 232-1. FürArrayBuffer beträgt das Maximum 231-1 (2GiB-1) auf 32-Bit-Systemen. Ab Firefox Version 89 beträgt der Maximalwert vonArrayBuffer 233 (8GiB) auf 64-Bit-Systemen.

Hinweis:Array undArrayBuffer sind unabhängige Datenstrukturen (die Implementierung der einen beeinflusst die andere nicht).

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, einArray oderArrayBuffer mit einer ungültigen Länge zu erstellen, welche folgende umfasst:

  • Negative Länge, über den Konstruktor oder das Setzen derlength Eigenschaft.
  • Nicht-ganzzahlige Länge, über den Konstruktor oder das Setzen derlength Eigenschaft. (DerArrayBuffer-Konstruktor zwingt die Länge zu einer Ganzzahl, aber derArray-Konstruktor nicht.)
  • Überschreitung der auf der Plattform unterstützten maximalen Länge. Für Arrays beträgt die maximale Länge 232-1. FürArrayBuffer beträgt die maximale Länge 231-1 (2GiB-1) auf 32-Bit-Systemen oder 233 (8GiB) auf 64-Bit-Systemen. Dies kann über den Konstruktor, das Setzen derlength-Eigenschaft oder Array-Methoden geschehen, die implizit die Länge setzen (wiepush undconcat).

Wenn Sie einArray mithilfe des Konstruktors erstellen, möchten Sie wahrscheinlich stattdessen die Literalschreibweise verwenden, da das erste Argument als Länge desArray interpretiert wird. Andernfalls möchten Sie möglicherweise die Länge begrenzen, bevor Sie dielength-Eigenschaft festlegen oder sie als Argument des Konstruktors verwenden.

Beispiele

Ungültige Fälle

js
new Array(2 ** 40);new Array(-1);new ArrayBuffer(2 ** 32); // 32-bit systemnew ArrayBuffer(-1);const a = [];a.length -= 1; // set the length property to -1const b = new Array(2 ** 32 - 1);b.length += 1; // set the length property to 2^32b.length = 2.5; // set the length property to a floating-point numberconst c = new Array(2.5); // pass a floating-point number// Concurrent modification that accidentally grows the array infinitelyconst arr = [1, 2, 3];for (const e of arr) {  arr.push(e * 10);}

Gültige Fälle

js
[2 ** 40]; // [ 1099511627776 ][-1]; // [ -1 ]new ArrayBuffer(2 ** 31 - 1);new ArrayBuffer(2 ** 33); // 64-bit systems after Firefox 89new 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 iterationconst arr = [1, 2, 3];arr.forEach((e) => arr.push(e * 10));

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp