为什么在返回对象中执行函数时我不能使用parens?

时间:2014-09-23 14:13:55

标签: javascript angularjs

有人可以解释为什么,如果我在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()时,它不起作用。

2 个答案:

答案 0 :(得分:2)

当您向_start,添加parens时,您需要将_start返回值分配给Start
此返回值为undefined

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

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

所以,错误是说" Start不是函数" ,而不是" _start不是。功能"

答案 1 :(得分:1)

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

P.S。缺乏声誉使这个评论,所以它反而回答。