【问题标题】:Value of 'e' may be overwritten in IE 8 and earlier'e' 的值可能会在 IE 8 及更早版本中被覆盖
【发布时间】:2013-09-08 08:16:11
【问题描述】:

我有这样的代码(取消 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) { 中的错误是什么意思?

【问题讨论】:

    标签: javascript jshint


    【解决方案1】:

    当 JSHint 或 ESLint 遇到其中 catch 标识符与变量或函数标识符相同的 try...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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-01
        相关资源
        最近更新 更多