9

次のようなコードがあります(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) {どういう意味ですか?

4

2 に答える 2

7

「'{a}' の値は、IE8 以前では上書きされる可能性があります」というエラーは、キャッチ識別子が変数または関数識別子と同じである try...catch ステートメントに JSHint または ESLint が遭遇するとスローされます。
問題の識別子がキャッチと同じスコープで宣言されている場合にのみ、エラーが発生します。
次の例では、変数 a を宣言し、a を catch ブロックの識別子として使用します。

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

于 2016-04-08T08:14:41.520 に答える
5

イベントとして e を持つイベントハンドラーであるというエラーが見つかりました。そして、これはエラーをスローするはずですhttps://github.com/jshint/jshint/issues/618

于 2013-09-08T08:18:36.317 に答える