中規模のアプリケーションをJavaScriptでプログラミングすると思わぬところで変数名や関数名の重複が発生してトラブルになります。
グローバルスコープの汚染を防ぐには色々方法があり、変数のスコープ等、色々と理解すべきことは多いのですが、即時関数の中にメソッドを定義することで解決する方法をメモしておきます。
var NameSpace = NameSpace || {}; //グローバル変数を生成
//即時関数を作成してその中に関数をまとめる
(function(_) {
var name = "Qiita";
function getName() {
return name;
}
_.displayName = function() {
console.log(getName());
};
_.setName = function(x) {
name = x;
};
})(NameSpace); //即時関数に名前空間用のグローバル変数を渡す
//利用側
NameSpace.displayName(); // Qiitaと表示
NameSpace.setName("New Qiita");
NameSpace.displayName(); // New Qiitaと表示