2010-12-30 13 views
1

これで、NodeJSのコンテキストでCommonJSモジュールシステムを試してみてください。CommonJSモジュール(nodejs)、strangeness

module.exports = pricingCalculator; 

function pricingCalculator (options) { 
    var target = {}; 
    return target; 
} 

これは機能します。おそらく、pricingCalculatorの変数宣言は関数スコープの先頭に持ち込まれるため、誤った順序付けは、関数が参照によって渡されたとしてもそれほど重要ではありません。私はそれを得る。私が理解できないのは、次の2つのバージョンが動作する理由です。

module.exports = pricingCalculator; 

var pricingCalculator = function (options) { 
    var target = {}; 
    return target; 
} 

失敗します。

module.exports = pricingCalculator; 

pricingCalculator = function (options) { 
    var target = {}; 
    return target; 
} 

失敗します。何が起こっているのかを深く理解することに興味がある。

+0

問題の詳細な説明はありましたか? –

答えて

0

最初の例では、関数は代入(Javaスクリプトの方法)の前に定義されています。
2番目と3番目の例では、割り当てが順番に実行されます。

+0

さて、本質的に、最初の例が並べ替えられています(または、関数定義がスコープの上部に持ち上げられています)。 –

+0

待って、2番目と3番目の例が機能することを意味しますか? –

+0

最初のものは機能なので動作します。 2番目は割り当てられた値のない既知の変数なので、うまくいきません。 3番目はまだ変数が定義されていません。または私はまだポイントを逃していますか? –

関連する問題