Saltar al contenido

Error de JavaScript: “no es una función”

Siéntete libre de divulgar nuestra web y códigos en tus redes sociales, necesitamos de tu ayuda para aumentar nuestra comunidad.

Solución:

Para más genérico consejos sobre la depuración de este tipo de problema MDN tiene un buen artículo TypeError: “x” no es una función:

Se intentó llamar a un valor como una función, pero el valor no es realmente una función. Algunos códigos esperan que proporcione una función, pero eso no sucedió.

¿Quizás hay un error tipográfico en el nombre de la función? ¿Quizás el objeto al que está llamando el método no tiene esta función? Por ejemplo, los objetos de JavaScript no tienen función de mapa, pero el objeto Array de JavaScript sí.

Básicamente, el objeto (todas las funciones en js también son objetos) no existe donde crees que existe. Esto podría ser para numeroso razones incluso(no es una lista extensa):

  • Falta la biblioteca de scripts
  • Error de tipografía
  • La función está dentro de un alcance al que actualmente no tiene acceso, por ejemplo:
var x = function()
   var y = function() 
      alert('fired y');
   
;
    
//the global scope can't access y because it is closed over in x and not exposed
//y is not a function err triggered
x.y();

  • Su objeto/función no tiene la función que llama:
var x = function()
   var y = function() 
      alert('fired y');
   
;
    
//z is not a function error (as above) triggered
x.z();

Tu LMSInitialize la función se declara dentro Scorm_API_12 función. Por lo tanto, solo se puede ver en Scorm_API_12 alcance de la función.

Si desea utilizar esta función como API.LMSInitialize("")declarar Scorm_API_12 funcionar así:

function Scorm_API_12() 
var Initialized = false;

this.LMSInitialize = function(param) 
    errorCode = "0";
    if (param == "") 
        if (!Initialized) 
            Initialized = true;
            errorCode = "0";
            return "true";
         else 
            errorCode = "101";
        
     else 
        errorCode = "201";
    
    return "false";


// some more functions, omitted.


var API = new Scorm_API_12();

También me golpeó este error. En mi caso, la causa raíz estaba relacionada con la sincronización (durante un refactor de código base): no se esperaba una función asíncrona que crea el objeto al que pertenece la función “no es una función”, y el intento posterior de invocar la función arroja el error, ejemplo debajo:

const car = carFactory.getCar();
car.drive() //throws TypeError: drive is not a function

La solución fue:

const car = await carFactory.getCar();
car.drive()

Publicar esto en caso de que ayude a cualquier otra persona que enfrente este error.

Recuerda que puedes permitirte esclarecer si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *