人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascript に関する質問です。jquery のプラグインで、下記のように()で関数をかこっているのがあるのですが、この()はどんな意味なのでしょうか? javascript の解説のどこかにあると思うのですが、わかりやすい説明があったら教えてください。
(function($) {})

jquery そのものは、(function(){}) となっていました。

●質問者: isogaya
●カテゴリ:インターネット ウェブ制作
✍キーワード:JavaScript jQuery プラグイン 関数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● znz
●25ポイント

「(function($) {})」だけだと無名関数を生成するだけで何もしないので、普通はその後にその無名関数を呼び出す「()」や「(jQuery)」がついていると思います。

目的としては、他のローカル変数の名前空間の分離と、jQueryというオブジェクトを「function($) {}」の中では「$」という短いローカル変数名で使えるようにすることです。

http://kawa.at.webry.info/200701/article_12.html

http://allabout.co.jp/internet/javascript/closeup/CU20080415A/in...

◎質問者からの返答

()で囲んでいるのは呼び出しをしているわけですね。


2 ● lang_and_engine
●45ポイント ベストアンサー

()自体がどういう意味を持っているのかについて,私も昔から疑問に思っておりました。


確かに()で関数をかこっているサンプルは山ほどあるのですが,

その事について明確に述べた情報源がどうしても見つかりませんでした。

「無名関数を()でくくれば後ろにもうひとつ()を付けて関数を呼び出せる」と書いてあるだけで,

どうしてそうなのかがわからなかったのです。


しかし,丸括弧の役割を具体例で推察する事はできます。


・無名関数の場合

(function (x){ alert(x); })("hoge"); // これはOK

function (x){ alert(x); }("hoge"); // NG

・jsonの場合


eval("({x:1, y:2})") // OK

eval("{x:1, y:2}") // NG

・Numberの場合


(0).constructor.constructor("alert('Hello');"); // OK

0.constructor.constructor("alert('Hello');"); // NG



しかし,


var g = function (x){ alert(x); };
alert( g );
alert( (g) );
// どちらも同じ結果になる

これは相違がありませんでした。



唯一,無名関数の周りの()について意味を付しているページがありました。

http://blog.phpbuero.de/?p=19

(a)

( function() { alert('x'); } )

In both cases the ?(…)“ returns a handle to that function though.

(a)()

( function() { alert('x'); } )()

the first set of round brackets will return the handle to the function, on which you then execute ?()“, which can simply be read as ?call it now“.

無名関数を()でくくると,その関数への"handle"を返す,とあります。

(しかし「handle」がここでどういう意味で使われているのかは不明)


上記の例を含めて考えると,質問者様の注目している()は

「オブジェクトとしてすぐに呼び出せる形式にしますよ」という意思表示,と捉えて良いようです。



下記は以前に執筆した関連エントリーです。

JavaScriptの動かないコード (中級編) jsonオブジェクトをevalできないエラー

http://d.hatena.ne.jp/language_and_engineering/20081022/12245976...

◎質問者からの返答

ありがとうございます。こういうことをきちんと説明してほしいですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ