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