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

RangeError: invalid array length - JavaScript | MDN

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 English Always 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)

Dans cet article

Type d'erreur

RangeError

Quel est le problme ?

Deux cas de figures peuvent causer cette erreur :

  • La cration d'un tableau Array ou ArrayBuffer dont la longueur est ngative ou suprieure ou gale 2^32
  • La modification de la proprit Array.length pour que celle-ci ait une valeur ngative ou suprieure ou gale 2^32.

Les tailles des objets Array et ArrayBuffer sont limites car leurs longueurs (length) sont reprsentes par des entiers non-signs sur 32 bits. Ces valeurs sont donc ncessairement comprises dans l'intervalle allant de 0 2^32-1.

Si vous utilisez le constructeur pour Array, il est probable que vous souhaitiez utiliser la notation littrale plutt que le constructeur. En effet, le premier argument de ce constructeur correspond la longueur du tableau.

Sinon, vous pouvez rduire la longueur utilise afin que celle-ci soit dans l'intervalle valide avant de l'utiliser pour une telle cration 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 property

let 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 hexadcimale
// pour 2^32 - 1
// ce qu'on peut galement crire (-1 >>> 0)

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page