名前のない関数を定義と同時に呼出す [Edit]

名前のない関数を定義すると同時に呼出すことができません。そういう必要があるかどうかは別として。

以下のサンプルスクリプト001を実行すると、関数の呼出しはされません。

スクリプト001■名前のない関数を定義と同時に呼出す
returnedValue = function () {
   trace("called"); // 出力されない
   return 1;
}();
trace(returnedValue); // 出力: undefined

もっとも、名前のない関数は、定義時に参照を取得しなければ、メモリに残りません。参照を保持せずに、呼出した結果だけを取得するという処理は、あまり意味はないでしょう。一旦参照を取得してからであれば、関数は正しく呼出すことができます(スクリプト002)。

スクリプト002■名前のない関数の参照を変数に格納してから呼出す
myFunction = function () {
   return 1;
};
returnedValue = myFunction();
trace(returnedValue); // 出力: 1

デバッグで関数をテストするときくらいしか、実際の用途は思いつきません。ただ、動作しないというのは、どうも気分がよくありません。JavaScriptでは、問題なく動作するようです。

その他の記事