Pebble's Diary

プログラマーの作業メモ

jQuery $(function() {...});とは何なのか

例えば、jQueryでこんなサンプルを見かけます。 この$(function() {... });のイディオムはなんために存在するのか?

<body>
<script>
$(function() {
  $( "#selectable" ).selectable();
});
</script>
<ol id="selectable">
</ol>
</body>

$()関数はドキュメントツリーが完成したタイミングで実行されるようです。
$()をつけずに実行するとDOMが出来上がっていないうちに実行され、スクリプトの読み込み位置によっては、処理がスカる可能性があるというわけです。
function(){}を使っているのは、JavaScriptにはスコープがないので、関数スコープにするために関数にしているのですね。
ちなみにこれは、window.onloadイベント(ページ内のすべての要素(画像などのリソースを含む)が読み込み完了したタイミング)よりも前のタイミングです。