我有这样的代码(取消ajax调用):
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();
}
和jshint显示错误:
Value of 'e' may be overwritten in IE 8 and earlier.
在
} catch(e) {
中,该错误是什么意思? 最佳答案
当JSHint或ESLint遇到try ... catch语句(其中catch标识符与变量或函数标识符相同)时,将引发“'{a}'的值可能在IE8及更早版本中被覆盖”错误。
仅当所声明的标识符在与catch相同的作用域中声明时,才会引发错误。
在下面的示例中,我们声明变量a,然后在catch块中使用a作为标识符:
var a = 1;
try {
b();
} catch (a) {}
要解决此问题,只需确保您的异常参数具有其作用域唯一的标识符:
var a = 1;
try {
b();
} catch (e) {}
http://linterrors.com/js/value-of-a-may-be-overwritten-in-ie8
关于javascript - 'e'的值可能会在IE 8和更早版本中被覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18681791/