他のライブラリとの競合を避けたブロックスコープの書き方
色々なライブラリを使用している既存のページなどで、ちょっとした処理を挟みたい場合、Prototype などと、$() が現状・将来的にも競合しないようにするには、
jQuery.noConflict()
を一般的に使いますが、もっと影響範囲を狭く、シンプルに実現する方法が以下のようにあります。
(function($) { // 2. 引数を $ で受けると // 3. このスコープでは、$ を jQuery オブジェクトとして参照できる。 $('#blah').show(); })(jQuery); // 1. 引数に jQuery オブジェクトを渡し
この方法であれば、
j$ = jQuery;
と、定義したときのように、名前空間を汚染することもありません。
無名関数とその引数で、スコープ内の値をコントロールする手法は他にも応用が利きます。
(function(window) { })(this);
など。