Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@lasaya

即時関数 javaプログラマのjavascript入門

// 通常のやり方
// 関数を定義
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')

↑半角$がなぜかうまく入力できないため全角にしています

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?