eslint/no-inner-declarations 严格
它的作用
禁止在嵌套块中声明变量或函数。
为什么这是不好的?
变量声明允许出现在任何语句可以出现的位置,即使嵌套在其他块的深层内部也是如此。
由于变量提升(hoisting)的影响,这种写法通常并不理想。将声明移动到程序或函数体的根级别可以提高代码清晰度。
需要注意的是,块级绑定(let、const)不会被提升,因此不受此规则影响。
示例
以下为错误的代码示例:
javascript
if (test) {
function doSomethingElse() {}
}以下为正确的代码示例:
javascript
function doSomethingElse() {}
if (test) {
// 你的代码在此处
}配置
第一个选项
type: "functions" | "both"
确定要检查的声明类型。
"functions"
禁止在嵌套块中进行函数声明。
"both"
禁止在嵌套块中进行函数和 var 声明。
第二个选项
此选项是一个包含以下属性的对象:
blockScopedFunctions
type: "allow" | "disallow"
"allow"
在严格模式下(ES6+ 行为)允许在嵌套块中进行函数声明。
"disallow"
无论是否处于严格模式,均禁止在嵌套块中进行函数声明。
如何使用
通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-inner-declarations": "error"
}
}bash
oxlint --deny no-inner-declarations