$(function(){
プログラム処理
})();
上記の様なソースをよく目にしますが最後に付いている括弧は何の役目を果たしているのでしょうか?
この括弧がある場合にエラーが発生する時と括弧をつけないとプログラムが動かない時があるので
JavaScriptの仕様で、関数呼び出し式の書き方として
【関数】(【引数】)
という書き方があります。つまりカッコ内は引数です。何も入っていないということは、引数を渡さずに関数を呼び出すということです。
良く見る書き方で、即時関数とか呼ばれる書き方があります。
(function(){ // hogefuga })()
これも、無名関数を引数なしで実行しているものです。
なぜこんなことをわざわざするかというと、主にクロージャを作るためです(クロージャが分からなければ、別途調べて下さい)。
ちなみに、無名関数をカッコで包んでいるのは、functionで始まると関数呼び出し式ではなくて、関数定義文と解釈されるからです。
なにか、説明が足りないところがあれば再度ご質問ください。
ところで、
$(function(){ //プログラム処理 })();
たぶん、これは動かないですね。
JavaScriptの仕様で、関数呼び出し式の書き方として
【関数】(【引数】)
という書き方があります。つまりカッコ内は引数です。何も入っていないということは、引数を渡さずに関数を呼び出すということです。
良く見る書き方で、即時関数とか呼ばれる書き方があります。
(function(){ // hogefuga })()
これも、無名関数を引数なしで実行しているものです。
なぜこんなことをわざわざするかというと、主にクロージャを作るためです(クロージャが分からなければ、別途調べて下さい)。
ちなみに、無名関数をカッコで包んでいるのは、functionで始まると関数呼び出し式ではなくて、関数定義文と解釈されるからです。
なにか、説明が足りないところがあれば再度ご質問ください。
ところで、
$(function(){ //プログラム処理 })();
たぶん、これは動かないですね。
無名関数とごっちゃになってるのかな。
jQueryならこれですよ。
$(function(){ // Document is ready });
そのコードは何かの間違いじゃないですか?
(function(){ プログラム処理 })();
$無しで↑このような形なら、プログラム処理を無名関数で定義してその場ですぐに実行するという意味です。何故このような書き方をするかというと「プログラム処理」で利用する変数のスコープを関数内に留める為です。functionで囲わない場合はiやstrなど何かしらの変数を使った際に変数名が被ったりして他のコードに影響を与える可能性があります。無名関数を利用することで他のコードへの影響を最小限(ほぼ無し)にすることができます。
ちなみに$を残して後ろの()を消した以下のような形の場合は、大抵jQueryを利用していて、ページ読み込み完了後に「プログラム処理」を実行するという意味になります。
$(function(){ プログラム処理 });
これは以下と同じ意味です。
$(document).ready(function(){ プログラム処理 });
コメント(0件)