2014-09-23 48 views
0

有人能解释为什么,如果我在return语句加括号来_start我得到的错误:为什么在返回对象中执行函数时不能使用parens?

undefined is not a function

_start是功能,是不是?

.factory('TrackPage', ['$location', function($location){ 

    var self = this; 

    function _start(){ 
     //method body 
    } 

    function _end(){ 
     //method body 
    } 

    return { 
     Start: _start, 
     End: _end 
    } 
}]); 

的代码工作的,但我想知道为什么当Start: ...Start: _start(),这是行不通的。

+0

这里可能还有其他问题。 '_start'被声明为一个函数,它应该能够在返回中被调用。用'Start:_start()'运行你的示例代码不会引发任何错误。我怀疑你有其他代码调用'Start.start()',除非'_start'本身返回一个函数,这会引发错误。 – pllee 2014-09-23 14:42:46

回答

2

当您添加括号到_start,,你的_start返回值分配给Start
该返回值是undefined

然后,当您尝试执行Start()时,您将收到undefined is not a function错误。

这是因为返回值_startundefined)不是函数。

所以,错误是说Start不是一个函数”,而不是_start不是一个函数”。

1

我不熟悉angularjs,但通常当你在函数a()中存储一个变量v时,你可以通过放入v()来调用函数,其中v = a。所以,如果你把v = a()并且调用v(),你最终会得到一个()()。 a()返回undefines,undefined()不是函数。

p.s.缺乏评论的声誉,所以它是,而不是回答。

+0

+1有一定的声望。 – 2014-09-23 15:58:47

相关问题