(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...
()で囲んでいるのは呼び出しをしているわけですね。
()自体がどういう意味を持っているのかについて,私も昔から疑問に思っておりました。
確かに()で関数をかこっているサンプルは山ほどあるのですが,
その事について明確に述べた情報源がどうしても見つかりませんでした。
「無名関数を()でくくれば後ろにもうひとつ()を付けて関数を呼び出せる」と書いてあるだけで,
どうしてそうなのかがわからなかったのです。
しかし,丸括弧の役割を具体例で推察する事はできます。
・無名関数の場合
(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...
ありがとうございます。こういうことをきちんと説明してほしいですね。
ありがとうございます。こういうことをきちんと説明してほしいですね。