javascript - 'e' 的值可能在 IE 8 及更早版本中被覆盖

标签 javascript jshint

我有这样的代码(取消 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/

相关文章:

javascript - V8 是否检测 int 变量并更有效地处理它们?

javascript - js提示 "myFunction is defined but never used"

javascript - 如何使用 Chirpy 设置 JSHint 选项?

javascript - 在 HTML 多选列表中选择选项的最佳方法

Javascript 查找字符串并用变量值替换

javascript - 无法使用 Jsoup 找到一些 html 元素

javascript - JSHint 未使用的变量

javascript - 数字正则表达式导致 jshint 'Bad or unnecessary escaping' 错误

javascript - 忽略 JSHint 中的全局变量

javascript - 更改组件的路由