TypeError: "x" is not a function

Message

JavaScript
TypeError: "x" is not a function

Error type

TypeError.

What went wrong?

It was attempted to call a value like a function, but the value is not actually a function. Some code expects you to provide a function, but that didn't happen.

Maybe there is a typo in the function name? Maybe the object you are calling the method on does not have this function? For example, JavaScript objects have no map function, but JavaScript Array object do.

There are many built-in functions in need of a (callback) function. You will have to provide a function in order to have these methods working properly:

Examples

A typo in the function name

In this case, which happens way too often, there is a typo in the method name:

JavaScript
var x = document.getElementByID("foo");
// TypeError: document.getElementByID is not a function

The correct function name is getElementById:

JavaScript
var x = document.getElementById("foo");

Function called on the wrong object

For certain methods, you have to provide a (callback) function and it will work on specific objects only. In this example, Array.prototype.map() is used, which will work with Array objects only.

JavaScript
var obj = { a: 13, b: 37, c: 42 };

obj.map(function(num) {
  return num * 2;
});

// TypeError: obj.map is not a function

Use an array instead:

JavaScript
var numbers = [1, 4, 9];

numbers.map(function(num) { 
  return num * 2; 
}); 

// Array [ 2, 8, 18 ]

See also

License

© 2016 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-us/docs/web/javascript/reference/errors/not_a_function

Errors JavaScript TypeError