2013-09-08 12 views
9

I (ajax çağrıları iptal etmemizi) bu gibi bir kod vardır önceki:Değer IE 8'de üzerine yazılabilir ve

if (requests.length) { 
    for (i=requests.length; i--;) { 
     var r = requests[i]; 
     if (4 !== r.readyState) { 
      try { 
       r.abort(); 
      } catch(e) { 
       self.error('error in aborting ajax'); 
      } 
     } 
    } 
    requests = []; 
    // only resume if there are ajax calls 
    self.resume(); 
} 

ve jshint gösteri hatası: } catch(e) { yılında

Value of 'e' may be overwritten in IE 8 and earlier. 

neyi Bu hata demek?

cevap

5

"IE8 ve daha önceki sürümlerde '' öğesinin üzerine yazılabilir 'hata kodu atlanır. JSHint veya ESLint, yakalama tanımlayıcısının bulunduğu bir try ... catch deyimiyle karşılaştığında hata atılır. bir değişken veya işlev tanımlayıcısı ile aynıdır.
Hata, yalnızca söz konusu tanıtıcı, yakalayıcıyla aynı kapsamda bildirildiğinde ortaya çıkar. Biz değişken bir ve sonra catch bloğu içinde tanıtıcı olarak bir kullanma ilan Aşağıdaki örnekte
:

var a = 1; 
try { 
    b(); 
} catch (a) {} 

bu sorun sadece istisna parametre kapsamı özgü bir kimliğe sahiptir sağlamak çözmek için:

var a = 1; 
try { 
    b(); 
} catch (e) {} 

http://jslinterrors.com/value-of-a-may-be-overwritten-in-ie8