Este error ocurre cuando se intenta leer la propiedad length
de un valor que no es un array, cadena de texto u objeto que tenga dicha propiedad. Las causas comunes incluyen:
1. Variable no definida o undefined
:
let myArray;
console.log(myArray.length); // Error: Cannot read property ‘length’ of undefined
2. Variable con valor null
:
let myArray = null;
console.log(myArray.length); // Error: Cannot read property ‘length’ of null
3. Valor no iterable:
let myArray = 42;
console.log(myArray.length); // Error: Cannot read property ‘length’ of 42
Antes de acceder a la propiedad length
, asegúrate de que la variable esté definida y sea del tipo esperado (array o cadena de texto).
let myArray = [1, 2, 3];
if (myArray) {
console.log(myArray.length);
} else {
console.log('myArray is not defined');
}
Usa typeof
o Array.isArray
para verificar el tipo de la variable antes de acceder a length
.
let myArray;
if (Array.isArray(myArray) || typeof myArray === 'string') {
console.log(myArray.length);
} else {
console.log('myArray is not an array or string');
}
Asigna un valor por defecto a la variable si es undefined
o null
.
let myArray = null;
myArray = myArray || []; // Asigna un array vacío si myArray es null o undefined
console.log(myArray.length);
null
explícitamente
Si esperas que la variable pueda ser null
, maneja esa situación de manera explícita.
let myArray = null;
if (myArray === null) {
console.log('myArray is null');
} else {
console.log(myArray.length);
}
En entornos que soporten ES2020, puedes usar el operador de encadenamiento opcional ?.
para acceder a propiedades de forma segura.
let myArray = null;
console.log(myArray?.length); // No lanzará un error, simplemente devolverá undefined
Jorge García
Fullstack developer