我有这样的代码(取消 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.
in } catch(e) {
这个错误是什么意思?
最佳答案
当 JSHint 或 ESLint 遇到 catch 标识符与变量或函数标识符相同的 try...catch 语句时,将抛出“'{a}' 的值可能在 IE8 及更早版本中被覆盖”错误。
只有当有问题的标识符在与捕获相同的范围内声明时才会引发错误。
在下面的示例中,我们声明了一个变量 a,然后在 catch block 中使用 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/