さすがに`jQuery.noConflict()`は、もう止めよう

概要

レガシーなコードを受け継いできたプロジェクトに散見される jQuery.noConflict 。今現在これを使用するメリットは全くなく、もはやデメリットすらあるこの 1 行を駆逐していきたいと思っている。(jQuery 本体の不要論は置いといて)

使われていた理由

jQuery は他ライブラリ(主に prototype.js)と競合する。$が競合してしまうのだが、これを回避する為に使われるのがjQuery.noConflictだった。jQuery 自身の$を使用する事を回避し競合を避けていた。

prototype.js や jQuery が使われ始めた当初、併用されるのが珍しくなかった為、こういった対応が必要であったのだが、それから prototype.js が完全に死に使われなくなった事でjQuery.noConflictは不要となっていった。

使われ方

色々と使い方はあるが、だいたい以下のような形で使われている。

jQuery.noConflict();

(function ($) {
  console.log("Hello");
})(jQuery);

一度、変数に入れて使われていたりもする。

var $j = jQuery.noConflict();
$j("#hoge").fadeIn();

やめる

先述の通り、 prototype.js を使っていない($に依存したライブラリを使用していない)場合は、完全にこのjQuery.noConflict();は不要である。
オマジナイ的に使用しているのであれば消したほうが良い。少量ながらコード量は減るし、DevTools から$を使った jQuery の実行も出来るようになる。

方法

対応として基本的には、jQuery.noConflict();の 1 行を消すだけで問題ないが、別の変数に格納している場合は、加えて変数の置換作業が必要となる。