unicorn/consistent-function-scoping Suspicious
作用
禁止在一个不会捕获任何外部作用域变量的作用域中声明函数。
为什么这不好?
将函数声明移动到尽可能高的作用域可以提高可读性,直接提升性能,并允许 JavaScript 引擎更好地优化你的性能。
示例
以下是此规则的错误代码示例:
js
export function doFoo(foo) {
// 不会从该作用域捕获任何内容,可以移动到外层作用域
function doBar(bar) {
return bar === "bar";
}
return doBar;
}
function doFoo(foo) {
const doBar = (bar) => {
return bar === "bar";
};
}以下是此规则的正确代码示例:
js
function doBar(bar) {
return bar === "bar";
}
export function doFoo(foo) {
return doBar;
}
export function doFoo(foo) {
function doBar(bar) {
return bar === "bar" && foo.doBar(bar);
}
return doBar;
}限制
此规则不会检测或移除函数内部多余的代码块:
js
function doFoo(foo) {
{
function doBar(bar) {
return bar;
}
}
return foo;
}它也会忽略包含 JSXElement 引用的函数:
jsx
function doFoo(FooComponent) {
function Bar() {
return <FooComponent />;
}
return Bar;
}立即执行函数表达式(IIFE) 会被忽略:
js
(function () {
function doFoo(bar) {
return bar;
}
})();配置
此规则接受一个包含以下属性的配置对象:
checkArrowFunctions
type: boolean
default: true
是否检查箭头函数的作用域。
如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"rules": {
"unicorn/consistent-function-scoping": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"unicorn/consistent-function-scoping": "error",
},
});bash
oxlint --deny unicorn/consistent-function-scoping版本
此规则在 v0.8.0 中添加。
