我使用函數表達式innerone
和innertwo
聲明瞭兩個函數。我首先宣佈innerone
然後innertwo
。 innerone
裏面我打電話innertwo
函數。但我擔心的是,我在innerone
之後使用函數表達式宣佈innertwo
,這意味着innertwo
未被懸掛。那麼爲什麼這些功能按這個順序工作呢?是否必須改變他們的訂單?在使用函數表達式聲明它之前調用一個函數。爲什麼?
這裏是代碼
var one = function() {
var innerone = function() {
innertwo();
},
innertwo = function() {
console.log('innertwo');
};
return {
innerone: innerone
};
};
var o = new one();
o.innerone();
它的工作,因爲你是調用'它被定義後innertwo'(當你調用'innerone')。如果你直接在'var innertwo = function()....之前調用'innertwo',它會拋出一個錯誤。 –
它的工作原理是因爲當你創建對象的一個新實例並且'innerone'返回時'innertwo'已經存在。但我不認爲你應該使用'new',因爲它看起來你正在使用模塊模式,只需使用'var o = one()'。 – elclanrs
爲什麼要放在第一位呢?有很多更清晰的方法可以得到相同的結果。 – jfriend00