Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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

lasaya
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした