跳到内容

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;
}

立即调用的函数表达式 (IIFE) 被忽略

js
(function () {
  function doFoo(bar) {
    return bar;
  }
})();

参考

在 MIT 许可证下发布。