未捕获的TypeError:undefined不是函数(代码重用场景)

时间:2014-02-16 03:09:20

标签: javascript function

我正在尝试重用如下的巨大功能

var hugeFunction = function(bell, whistle, another, param, another, param) {
    //lots of work
}

在它下面,在同一个函数中,我们有

self.useFunctionInstance = hugeFunction(bell, whistle, another, param, another, param);

所以当我打电话时

self.useFunctionInstance()

我收到以下错误:

Uncaught TypeError: undefined is not a function on line 3862 (helloApp#undefined)

我尝试了所有的东西,并且阅读了很多,但我还是没有得到它!请帮忙!?

编辑:巨大的功能本质上是一个浏览函数,有大量的参数,并没有返回任何东西,我只是想能够调用它,但如果我必须让它返回一些东西,那么它很好,我我会这样做的。有没有办法让函数使用另一个函数?我可能会以错误的方式提出问题,非常感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

如果要从该属性调用函数,则需要为useFunctionInstance分配函数。

// Assign anonymous function that invokes `hugeFunction()`
self.useFunctionInstance = function() {
    return hugeFunction(bell, whistle, another, param, another, param);
};

你拥有它的方式,你立即调用,并分配其返回值,显然是undefined


如果您需要永久捕获变量的当前状态,则可以使用.bind()创建一个具有这些值的新函数。

self.useFunctionInstance = hugeFunction.bind(null, bell, whistle, another, param, another, param);

答案 1 :(得分:0)

您已将hugeFunction的返回值指定为useFunctionInstance,并且您似乎没有返回任何内容。

你应该回来关闭以做你想做的事。

var hugeFunction = function(bell, whistle, another, param, another, param) {
  return function() {
    //lots of work
  }
}

答案 2 :(得分:0)

你也可以这样做:

self.useFunctionInstance = hugeFunction;

然后称之为:

self.useFunctionInstance(bell, whistle, another, param, another, param);

问题是您将函数返回值(以及调用它)分配给self.useFunctionInstance