3

JavaScript オブジェクト リテラルを自己実行匿名関数でラップしようとしています。以下の最初のコード例は正常に動作しますが、2 番目のコード例はうまく動作しません。その理由はよくわかりません。

作品:

(function(){
    return MyApp = {
        init: function() {
            console.log('MyApp init');
        }
    }
})();

動作しません:

(function(){
    var MyApp = {
        init: function() {
            console.log('MyApp init');
        }
    }
    return MyApp;
})();

私が理解しているように、SEAFは実行され、すぐに戻るはずです。そのため、最初の例では、操作できるオブジェクトとして MyApp が返されます。MyApp を SEAF 内の変数に割り当ててから返すと、同じことが行われると思いましたが、次のようになります。

Uncaught ReferenceError: MyApp is not defined 

なんで?

4

3 に答える 3