(function($) {})
jquery そのものは、(function(){}) となっていました。
()自体がどういう意味を持っているのかについて,私も昔から疑問に思っておりました。
確かに()で関数をかこっているサンプルは山ほどあるのですが,
その事について明確に述べた情報源がどうしても見つかりませんでした。
「無名関数を()でくくれば後ろにもうひとつ()を付けて関数を呼び出せる」と書いてあるだけで,
どうしてそうなのかがわからなかったのです。
しかし,丸括弧の役割を具体例で推察する事はできます。
・無名関数の場合
(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) ); // どちらも同じ結果になる
これは相違がありませんでした。
唯一,無名関数の周りの()について意味を付しているページがありました。
(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...
「(function($) {})」だけだと無名関数を生成するだけで何もしないので、普通はその後にその無名関数を呼び出す「()」や「(jQuery)」がついていると思います。
目的としては、他のローカル変数の名前空間の分離と、jQueryというオブジェクトを「function($) {}」の中では「$」という短いローカル変数名で使えるようにすることです。
http://kawa.at.webry.info/200701/article_12.html
http://allabout.co.jp/internet/javascript/closeup/CU20080415A/in...
ハンドルは自動車や自転車の操縦するためのもの。
ハンドルが無ければ操縦できない。ハンドルがあれば操縦できる。
プログラムの世界では
xx関数のハンドルを取得 = xx関数を操縦(利用)できるようになる。
というような意味として捉えればOK。
フォローありがとうございます。その通りだと思います。
ファイルのハンドル,ウィンドウのハンドル,イベントのハンドルなどがありますね。
ただしここでは,ECMA/DOM上でどういう裏付けを持って丸括弧を"handle"と言っているのか,気になるところです。
(オブジェクトのハンドル?)
質問内容にあるように, 「ハンドル」である旨がjavascript仕様のどこかに明記してあれば嬉しいのですが…。
ハンドルが取れる(=関数として使えるようになる)という意味で
使っているだけだと思いますけど。
文法的には ↓ が参考になるかと・・・
O'Reilly JavaScript David Flanagan著 p188-
http://books.google.co.jp/books?pg=PA188&lpg=PA188&dq=javascript+%22function+no+name%22&sig=z2cdHvBiiDxjsTutjf7Yg3BaHU8&ct=result&id=VOS6IlCsuU4C&as_brr=3&ots=wHOdFQ4xyW&output=html