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

RangeError: invalid array length - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

RangeError: invalid array length

Mensaje

RangeError: invalid array length (Firefox)
RangeError: Invalid array length (Chrome)
RangeError: Invalid array buffer length (Chrome)

En este artculo

Tipo de error

RangeError

Cul es el problema?

Una longitud de array invlida puede presentarse en stas situaciones:

  • Cuando se crea un Array o un ArrayBuffer el cual tiene una longitud negativa o es igual o mayor a 2^32, o
  • cuando se define la propiedad Array.length a un valor el cual es negativo o es igual o mayor a 2^32.

Por qu el Array y ArrayBuffer tienen longitud limitada? La propiedad de longitud de un Array o un ArrayBuffer est representada con un entero sin signo de 32 bits, el cual slo puede almacenar valores que estn en el rango de 0 a (2^32)-1.

Si ests creando un Array usando el constructor, es mejor que utilices la notacin literal, ya que el primer argumento es interpretado como la longitud del Array.

De lo contrario, puedes especificar un mnimo y un mximo para la longitud antes de definir la propiedad de longitud, o puedes usarla como el argumento del constructor.

Ejemplos

Casos invlidos

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; // definir la propiedad de longitud a -1

let b = new Array(Math.pow(2, 32) - 1);
b.length = b.length + 1; // definir la propiedad de longitud a 2^32

Casos vlidos

js
[Math.pow(2, 40)]; // [ 1099511627776 ]
[-1]; // [ -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 es la notacin hexadecimal de 2^32 - 1
// el cual tambin se puede especificar como (-1 >>> 0)

Vase tambin


Web Proxy Viewer  |  New URL  |  Original Page