TypeError: "x" is not a function
It 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:
Array
or TypedArray
objects: Map
and Set
objects: In this case, which happens way too often, there is a typo in the method name:
var x = document.getElementByID('foo'); // TypeError: document.getElementByID is not a function
The correct function name is getElementById
:
var x = document.getElementById('foo');
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.
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:
var numbers = [1, 4, 9]; numbers.map(function(num) { return num * 2; }); // Array [2, 8, 18]
© 2005–2017 Mozilla Developer Network and individual 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