Volver a la página principal
lunes 15 julio 2024
60

Cómo solucionar el error "TypeError: Cannot read property ‘length’" en JavaScript

Causas comunes del error

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

Soluciones

1. Asegurar la definición de la variable

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');
}

2. Comprobar el tipo de la variable

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');
}

3. Asignar valores por defecto

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);

4. Manejar el valor 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);
}

5. Usar operadores de encadenamiento opcional (Optional chaining)

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
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer