2010-10-31 102 views

回答

1

你的第二個例子是無效:

return{  
     init(); 
    } 

{ ... }定義對象文字必須包含鍵 - 值對,如{ foo: 'bar' }

1

你的第一個例子做的東西內init並返回undefined

你的第二個例子是無效的。我想你想要:

return init() 

沒有花括號。這將返回init的結果(您尚未指定)。在這兩種情況下,setupmoreSetup都不會被調用,所以我不確定他們爲什麼在那裏。

你已經遺漏了很多細節,但我現在的答案是:如果調用者需要做一些init的結果,你需要選擇#2。

0

沒有冒犯的意思,但是這似乎是一個有些困惑的問題。正如其他人所指出的那樣,在第二個例子中,你不應該在init()附近有括號。當你說function setup() { ... }你只是定義了函數,而不是調用它 - 意味着在這個例子中函數永遠不會被調用。

但我張貼這個答案嘗試解決的主要事情是這樣的:「呼叫初始化函數返回與該函數調用」。在第二個例子中認爲你「正在返回函數調用」是不正確的。當你說return init(),第一init()被調用,並返回一定的價值,然後你foo函數返回init()返回的值。

所以這是你應該問的問題。難道我只是想foo打電話init,還是我想foo打電話init和返回值init回報?這是兩者之間的差異(一旦其他錯誤被刪除)。