「 リーダブルコード」を読んでいてこれまで意識いなかったグローバル変数についての記述があったので備忘録として残しておきます。
//ダメな例
submitted = false // グローバル変数
var submit_form = function (form_name) {
if (submitted) {
return; //
}
...
submitted = true
// 良い例
var submit_form = function ((form_name) {
var submitted = false // ローカル変数にして、以下の関数からしかアクセスされないようにする
if (submitted) {
return; //
};
}());
// 最終行の()は外側の上関数がすぐに実行されて内側の関数を返している。
// この技法は、内側の感性だけがアクセスできる「プライベート」スコープを作る効果があり、
// 読み手は「submitted変数はいつ使われるの?」と気になったり、
// 同じ名前のグローバル変数と衝突しないかと不安になったりすることがないらしい。