https://stackoverflow.com/questions/32751209/jasmine-typeerror-is-not-a-function

信息

TypeError: "x" is not a function

错误类型

TypeError

哪里出错了?

问题出在你试图去调用一个像函数一样的值,但是该值实际上不是函数,有时候你的代码需要调用一些函数,但是那种值并不能当作函数来被调用。

也许函数名称上有错别字? 也许你正在调用Object对象没有这个方法? 例如,在JavaScript中单纯的对象(Object)没有map函数,但是JavaScript数组(Array)对象却有这个函数。

在比如,在JavaScript中很多原生对象的内置方法需要你提供一个(回调)函数。 所以你必须提供一个函数,以使这些方法正常工作:

例子

函数的名称错误

函数的名称拼写错误,这种情况是经常发生的:

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

正确的方法名应该是 getElementById:

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

调用Object类型中不存在的方法

对于某些特殊的方法,它只属于某些特定的原生对象中,你必须提供一个回调函数才能正常运行。例如:这里调用了一个 Array.prototype.map() 方法,但是这方法只能被 Array 对象所调用。 

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

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

// TypeError: obj.map is not a function

正确的做法,使用一个数组来代替:

var numbers = [1, 4, 9];

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

// Array [ 2, 8, 18 ]

相关

 

相关文章:

  • 2021-07-27
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-02
  • 2022-01-18
  • 2021-11-24
  • 2021-09-10
  • 2022-01-08
  • 2022-02-02
  • 2021-09-23
相关资源
相似解决方案