旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[JavaScript] varによる変数定義は右辺実行より先

2012年2月3日

何のこと?

var で変数宣言すると右側から参照できるということで
つまりはこーゆーことです

window.iExisted = ('iExisted' in window); //-> window.iExisted は false
var iExisted = ('iExisted' in window); //-> iExisted は true
var isU = ('isU' in window && window.isU === undefined); //-> isU は true

だから、良く見かける以下のコードが有効なんすね

var timerId = setInterval(function(){
    clearInterval(timerId);
}, 1000);

これで気づきました

var MyClass = (function(){
    // 自分が既に読み込まれていたらアラートする意図
    // これは毎回アラートされちゃうダメな例
    if ('MyClass' in window) {
        alert('MyClass is already defined');
        return;
    }
    var cls = function(){};
    // ... some processing ...
    retrun cls;
    // returnで返すのはやめて↓の方が良い
    //window['MyClass'] = cls;
})();

という、イマサラ話