unicorn/consistent-function-scoping 可疑
作用
禁止在不会捕获任何从外部范围中的变量的范围内声明函数。
为什么这样做不好?
将函数声明移动到尽可能高的范围内可以提高可读性,直接 提高性能 并且允许 JavaScript 引擎更好地 优化您的性能。
示例
此规则不正确代码的示例
js
export function doFoo(foo) {
// Does not capture anything from the scope, can be moved to the outer scope
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;
}
选项
checkArrowFunctions
类型:布尔值
默认值:真
传递 "checkArrowFunctions": false
以禁用对箭头函数的 linting。
局限性
此规则不会检测或移除函数内部的多余代码块
js
function doFoo(foo) {
{
function doBar(bar) {
return bar;
}
}
return foo;
}
还会忽略包含 JSXElement
引用的函数
jsx
function doFoo(FooComponent) {
function Bar() {
return <FooComponent />;
}
return Bar;
}
js
(function () {
function doFoo(bar) {
return bar;
}
})();