const 应该在 React.js 中的函数组件之外吗?

Edu*_*nco 12 optimization scope constants typescript reactjs

我的一些代码收到了一条评论,上面写着“将 const 移到函数之外以避免重新声明”。这是一个普通的功能组件,如下所示:

export default function someComponent() {
  const someString = 'A string';
  ///...
}
Run Code Online (Sandbox Code Playgroud)

我对这导致重新声明的想法感到困惑,因为它没有,我知道保存变量和常量的记录属于作用域,所以它不完全是这样。但后来我想起打字稿不允许你在类中使用 const,不确定原因或者这是否相关。但后来 ts 在 ts v2 中添加了 readonly 修饰符,所以混乱仍然存在。

cons 应该在函数组件之外吗?我很想知道更多的意见。

小智 13

硬币有两个面。首先,就干净的代码和可读性而言,我非常喜欢像您的示例中那样的本地声明。我也喜欢使用更多嵌套函数。

然而,在 JavaScript 中,每次函数执行时,局部定义都会被重新声明,即使它们是常量或函数。所以这是一个权衡。如果该函数被多次调用,这就会成为一种开销。

tsc我认为对于像 TypeScript或其他预处理器这样的编译器来说,在编译时提取这些定义以获得两全其美并不困难。但他们这样做很可能并不是为了保持完全兼容。我不知道有这样的工具,但如果有的话我会很感兴趣。