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
類型:boolean
預設值:true
傳遞 "checkArrowFunctions": false
以停用箭頭函式的檢查。
限制
此規則不會偵測或移除函式內部的多餘程式碼區塊
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;
}
})();