Eslint
规则 | Rules

no-catch-shadow

不允许变量的阴影捕捉(无捕捉阴影)

在IE 8及更早版本中,如果该变量与catch子句参数具有相同的名称,则catch子句参数可以覆盖外部作用域中变量的值。

var err = "x"; try { throw "problem"; } catch (err) { } console.log(err) // err is 'problem', not 'x'

规则细节

此规则旨在防止程序中出现意外行为,这可能是由于IE 8及更早版本中的错误引起的,其中catch子句参数可能泄漏到外部作用域中。只要遇到与外部作用域中的变量具有相同名称的catch子句参数,此规则就会发出警告。

此规则的错误代码示例:

/*eslint no-catch-shadow: "error"*/ var err = "x"; try { throw "problem"; } catch (err) { } function err() { // ... }; try { throw "problem"; } catch (err) { }

此规则的正确代码示例:

/*eslint no-catch-shadow: "error"*/ var err = "x"; try { throw "problem"; } catch (e) { } function err() { // ... }; try { throw "problem"; } catch (e) { }

何时不使用它

如果您不需要支持IE 8及更早版本,则应该关闭此规则。

版本

该规则在ESLint 0.0.9中引入。

资源