O que é um erro 'undefined is not a function' em JavaScript?
Esse erro ocorre em JavaScript quando você tenta chamar uma função em um valor que é 'undefined', ou seja, quando o valor não foi inicializado corretamente ou não é uma função válida. Isso pode acontecer por diversos motivos, como tentar invocar um método em um objeto que não existe ou chamar uma função que ainda não foi definida.
O que causa o erro 'undefined is not a function'?
Existem várias situações em que esse erro pode ocorrer. Aqui estão alguns exemplos comuns:
- Chamar uma função em um objeto que não existe ou está indefinido:
Se você estiver tentando acessar um método de um objeto e esse objeto não estiver definido, você verá esse erro.
Exemplo:
let pessoa = undefined;
pessoa.falar(); // Isso vai gerar o erro 'undefined is not a function'
Neste exemplo, estamos tentando chamar o método falar
em um objeto pessoa
, que não foi definido corretamente, gerando o erro.
- Função ou método não definido em uma variável:
Outro caso comum é quando você tenta chamar uma função que não foi atribuída corretamente a uma variável.
Exemplo:
let minhaFuncao;
minhaFuncao(); // Isso vai gerar o erro 'undefined is not a function'
Aqui, estamos tentando chamar minhaFuncao
, mas ela não foi definida, resultando no erro.
Como corrigir o erro 'undefined is not a function'?
Agora que entendemos o que causa esse erro, vamos ver algumas formas de corrigi-lo.
- Verifique se o objeto ou a variável está definido corretamente:
Antes de tentar chamar um método ou função, é importante garantir que o objeto ou a variável não seja undefined
.
Exemplo de correção:
let pessoa = { falar: function() { console.log('Olá!'); } };
pessoa.falar(); // Agora vai funcionar corretamente
Neste exemplo, verificamos que o objeto pessoa
foi definido corretamente com o método falar
e chamamos ele sem erros.
- Certifique-se de que a função foi corretamente definida e atribuída:
Se você estiver utilizando funções ou métodos, verifique se eles estão corretamente definidos e atribuídos a variáveis antes de chamá-los.
Exemplo de correção:
let minhaFuncao = function() { console.log('Função chamada!'); };
minhaFuncao(); // Agora a função é chamada corretamente
- Use condicionais para garantir que o objeto ou função exista:
Uma abordagem mais robusta é verificar se o objeto ou função existe antes de chamá-la, utilizando uma condicional como if
.
Exemplo de correção com condicional:
let pessoa = { falar: function() { console.log('Olá!'); } };
if (pessoa && pessoa.falar) {
pessoa.falar();
} else {
console.log('Método não encontrado');
}
Neste exemplo, estamos utilizando uma verificação para garantir que o método falar
exista no objeto pessoa
antes de chamá-lo.
Conclusão
O erro 'undefined is not a function' é um dos erros mais comuns em JavaScript, mas felizmente é fácil de resolver. O principal é garantir que o objeto ou função esteja corretamente definido antes de tentar usá-lo, além de utilizar boas práticas como verificações condicionais para evitar que esse erro ocorra em tempo de execução.
Como evitar o erro 'undefined is not a function' em JavaScript e depurar seu código
O erro 'undefined is not a function' é uma situação comum em JavaScript e pode ocorrer em diversas circunstâncias. A principal causa é tentar chamar um método ou função que não existe ou que não foi devidamente inicializado. Para corrigir esse tipo de erro, é importante garantir que todas as funções e objetos estejam definidos antes de seu uso, além de considerar o uso de verificações para garantir que o código esteja seguro e sem erros.
Algumas aplicações:
- Verificar se um objeto possui os métodos ou funções necessários antes de chamá-los.
- Usar condicionais para garantir que o valor seja válido e não
undefined
antes de invocar métodos. - Certificar-se de que funções estão sendo atribuídas corretamente a variáveis.
Dicas para quem está começando
- Evite chamar métodos em objetos que podem estar indefinidos.
- Use sempre verificações como
if
para garantir que o valor não sejaundefined
. - Se possível, utilize ferramentas de depuração como o DevTools para identificar a origem do erro.

João Gutierrez
Desenvolvedor e arquiteto de software com ampla atuação em PHP, Node.js e Python.
Mais sobre o autor