2017-02-01 9 views
0

に私はJavaScriptを勉強してJavascriptの実行エラーが崇高

var Module = (function() { 
 
    // code 
 
    var publicMethod = {}; 
 

 
    var privateMethod = function(someStringToBePassed) { 
 
     debug("I love USA. "+someStringToBePassed); 
 
    } 
 

 
    publicMethod.someFunction = function() { 
 
     privateMethod("USA is sexy"); 
 
    } 
 
    return publicMethod; 
 
})(); 
 

 
debug(Module.someFunction());

私は崇高でこれを実行しています:)これは私の第一週です。私は次の結果を見ている。

--> I love USA. USA is sexy 
--> undefined 

なぜここに定義されていないのか説明してください。

[Finished in 0.0s] 

私はあなたがsomeFunctionから何かを返すいない

+1

あなたは 'someFunction'を呼び出し、その後すぐDEBUG''に結果を渡しているからです。 2番目のデバッグを削除するか、最初のデバッグを 'return'に置き換えてください。 – noahnu

答えて

1

結果に「未定義」見ていますなぜ私に教えてください。これを試してください:

someFunctionはprivateMethodの値を返します。 privateMethodは構築された文字列を返します。

var Module = (function() { 
 
// code 
 
var publicMethod = {}; 
 

 
var privateMethod = function(someStringToBePassed) { 
 
return "I love USA. "+someStringToBePassed; 
 
} 
 

 
publicMethod.someFunction = function() { 
 
return privateMethod("USA is sexy"); 
 
} 
 
return publicMethod; 
 
})(); 
 

 
debug(Module.someFunction());

+0

Hey Thomas、 返信いただきありがとうございます。 Module.someFunction()をModule.publicMethod()またはModule.publicMethodに置き換えると、エラーが表示されます。外部からpublicMethodを参照できない理由はありますか? –

+1

コードが実行されると、 'Module'オブジェクトは' publicMethod'オブジェクトへの参照を取得します。これは、自己呼び出し関数から返すためです。 したがって、 'Module'は' publicMethod'オブジェクトのプロパティにのみアクセスできます(あなたの例では 'someFunction'だけです)。 「javascriptモジュールパターン」を検索するだけで詳しい情報が見つかります。いくつかの例がここにあります - https://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript –

0
var Module = (function() { 
//code 
    var publicMethod = {}; 

    var privateMethod = function(someStringToBePassed) { 
     return ("I love USA. "+someStringToBePassed); 
    } 

    publicMethod.someFunction = function() { 
     return privateMethod("USA is sexy"); 
    } 
    return publicMethod; 
})(); 

var sample = Module; 
console.log(sample.someFunction()) 
関連する問題