En esta pregunta , descubrí que mi problema se debía a que accidentalmente había incrementado la propiedad Array.Prototype.length usando ++
Lo que me pregunto es por qué la length no es una propiedad de solo lectura de Arrays. Veo que no es un descuido en el diseño del lenguaje, porque MDN dice específicamente que puede " ESTABLECER o devolver" la longitud de una matriz. Me pregunto por qué soy capaz de equivocarme de esa manera en particular. ¿Qué tipo de caso de uso merecería poder cambiar la longitud de una matriz sin cambiar la cantidad de elementos que contiene?
Encontré este interesante artículo de JavaScriptTutotorial.net que explica por qué podría usar esto.
Si establece la longitud en cero, la matriz estará vacía:
const fruits = ['Apple', 'Orange', 'Strawberry']; fruits.length = 0; console.log(fruits); // []Si establece la propiedad de longitud de una matriz en un valor inferior al índice más alto, se eliminarán todos los elementos cuyo índice sea mayor o igual que la nueva longitud.
El siguiente ejemplo cambia la propiedad de longitud de la matriz de frutas a dos, lo que elimina el tercer elemento de la matriz:
const fruits = ['Apple', 'Orange', 'Strawberry']; fruits.length = 2; console.log(fruits); // [ 'Apple', 'Orange' ]Si establece la propiedad de longitud de una matriz en un valor superior al índice más alto, la matriz estará libre. Por ejemplo:
const fruits = ['Apple', 'Orange', 'Strawberry']; fruits.length = 5; console.log(fruits); // [ 'Apple', 'Orange', 'Strawberry', <2 empty items> ]