この例は、StoyanStefanovによるObjectOrientedJavaScriptという本の79ページから入手しました。どうすればよいかわからないので、このプログラムを初めて実行したとき(Enterキーを押して)、「undefined」が返されました。その後、作者の指示に従って、私はそれを呼び出しa();
、アラート「Workyworky」を受け取りました
私の質問は
a)最初のステップを正しく実行しましたか?つまり、「Enter / Return」を押すだけで自己呼び出しプログラムを実行することになっていますか?
b)プログラムを実行するために「Enter / Return」を押すだけで正しかったのに、なぜ「undefined」の結果が得られたのですか。このプログラムは、(最初の実行時に)関数actualWork()への参照をリファントすると著者は言います。参照を返す場合、なぜそれが未定義と見なされるのですか?どういうわけか重要ですか?
jsfiddle.netにコードを入力して実行を押しても何も起こらなかったが、コンソールで最初に実行したときに「未定義」になり、その後a()を実行したときにアラートが発生したことに注意してください。
var a = function() {
function someSetup(){
var setup = 'done';
}
function actualWork(){
alert('Worky-worky');
}
someSetup();
return actualWork;
}();