“e”的值可能会在 IE 8 及更早版本中被覆盖

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

本文关键字:版本 覆盖 IE      更新时间:2023-09-26

我有这样的代码(取消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 遇到尝试时,会抛出"{a} 的值可能会在 IE8 及更早版本中被覆盖"错误。catch 语句,其中 catch 标识符与变量或函数标识符相同。
仅当相关标识符在与 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

我发现错误是将 e 作为事件的事件处理程序。这应该会抛出错误 https://github.com/jshint/jshint/issues/618