// 通常のやり方
// 関数を定義
function func1(id) {
document.write(id + '<br>');
}
// 関数を実行
func1('id1');
// 即時関数の場合、関数を定義してすぐに実行できる
// 書き方は関数をカッコで囲み、後に引数を付ける
// もちろん引数無しのfunctionも可能
// 無名関数も可能
// (function(xxx){})(引数);
(function func2(id) {
document.write(id + '<br>');
})('id2');
// function定義がスコープ外になるため、後で実行することはできない
try {
func2('id2-2'); // これはエラーになる
} catch(e) { document.write('id2-2はエラー' + '<br>'); }
// 即時実行関数をあとで実行する場合は変数に格納する
// (でも、あまりきれいじゃない気がする)
var later;
(later = function func3(id) {
document.write(id + '<br>');
})('id3');
later('id3-2');
■ 実行結果
id1
id2
id2-2はエラー
id3
id3-2
// 利用例としてDWRとjQuery、Prototype.jsを同時に使う場合、
// $がバッティングするのを防ぐ対応がある
// この例の場合$がバッティングしてもjQueryの$を実行できる
// jQueryはjQuery.noConflict()を使う方法もある
(function ($, id) {
alert($(id).html());
})(jQuery, 'id1')
↑半角$がなぜかうまく入力できないため全角にしています