グローバル…

プログラミングの習慣で、JavaScriptでもグローバル変数…というかグローバルオブジェクトに変数を作らないようにしているけど、それがいいことなのか悪いことなのかいまいち不明。

世間のコードを見渡してみると、window.ほげほげな変数は見かけるし、関数もファーストクラスオブジェクトだから「関数はいいのか?」という話になるような気がする。
「var f = (function() { return function() {}; })();」みたいに関数を作ることも多いし。

トップレベルの関数ついて考えると、Cの関数もJavaのパッケージなしクラスも(またパッケージそのものも)本質的には変わらないような気がするなぁ…
トップレベルでアクセスできるものはimmutableならいいのかな?




…などということと、ふと考えた。それなりに規模の大きなライブラリなら、グローバルオブジェクトにmutableなプロパティをばんばん追加するということは少ないのかも。デバッグ、メンドそうだし。