2014-09-23 27 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

相關問題