Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Référence des erreurs JavaScript
  5. RangeError: invalid array length

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

RangeError: invalid array length

Message

RangeError: Array length must be a finite positive integer (Edge)RangeError: invalid array length (Firefox)RangeError: Invalid array length (Chrome)RangeError: Invalid array buffer length (Chrome)

Type d'erreur

RangeError

Quel est le problème ?

Deux cas de figures peuvent causer cette erreur :

  • La création d'un tableauArray ouArrayBuffer dont la longueur est négative ou supérieure ou égale à 2^32
  • La modification de la propriétéArray.length pour que celle-ci ait une valeur négative ou supérieure ou égale à 2^32.

Les tailles des objetsArray etArrayBuffer sont limitées car leurs longueurs (length) sont représentées par des entiers non-signés sur 32 bits. Ces valeurs sont donc nécessairement comprises dans l'intervalle allant de 0 à 2^32-1.

Si vous utilisez le constructeur pourArray, il est probable que vous souhaitiez utiliser la notation littérale plutôt que le constructeur. En effet, le premier argument de ce constructeur correspond à la longueur du tableau.

Sinon, vous pouvez réduire la longueur utilisée afin que celle-ci soit dans l'intervalle valide avant de l'utiliser pour une telle création ou modification.

Exemples

Exemples invalides

js
new Array(Math.pow(2, 40));new Array(-1);new ArrayBuffer(Math.pow(2, 32));new ArrayBuffer(-1);let a = [];a.length = a.length - 1; // set -1 to the length propertylet b = new Array(Math.pow(2, 32) - 1);b.length = b.length + 1; // set 2^32 to the length property

Exemples valides

js
[Math.pow(2, 40)][-1]; // [ 1099511627776 ] // [ -1 ]new ArrayBuffer(Math.pow(2, 32) - 1);new ArrayBuffer(0);let a = [];a.length = Math.max(0, a.length - 1);let b = new Array(Math.pow(2, 32) - 1);b.length = Math.min(0xffffffff, b.length + 1);// 0xffffffff est la notation hexadécimale// pour 2^32 - 1// ce qu'on peut également écrire (-1 >>> 0)

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp