为什么大多数时候我应该在 JavaScript 中使用 const 而不是 let?

问题描述 投票:0回答:4

为什么大多数时候我应该在 JavaScript 中使用

const
而不是
let
?正如我们所知,如果我们使用
const
那么我们以后就不能重新分配价值。那为什么不用
let
而不是 const 呢?

javascript constants
4个回答
60
投票

基本上,

  • 使用
    let
    如果变量的值会在代码中改变
  • 使用
    const
    如果它不会你/你的团队想在你正在处理的项目中的那些情况下使用
    const
    ;这是风格问题

如果你确实使用了

const
,那么令人惊讶的是,上面的指南意味着你使用
const
的频率是多少,因为你最终不需要更改变量的值(如果你遵循保持变量值的通常规则大小合理的函数等)。 (好吧,无论如何,这让我感到惊讶......)

当变量的¹值不打算改变时使用

const
完成一些事情:

  1. 它告诉其他阅读您代码的人您不打算更改该值。

  2. 如果您更改代码以便它写入该变量,它会给您一个很好的主动错误。 (一个像样的 IDE 可以主动标记它,但如果没有,你会在运行代码时收到错误。)然后你可以做出明智的、有意识的决定:你应该将它更改为

    let
    ,还是你不是故意的首先更改该变量的值?

  3. 它向 JavaScript 引擎的优化器提示您不会更改该变量的值。虽然引擎可以通过代码分析经常解决这个问题,但使用

    const
    可以省去麻烦。 (警告:我不知道这对 JavaScript 引擎是否真的有用。看起来是这样,但运行时代码优化是一个非常复杂且有时不直观的过程。)


¹ 是的,使用术语“变量”来指代定义上不变的事物很有趣。 :-) 规范的术语是“绑定”,但我敢打赌你不会很快听到人们在日常对话中谈论“绑定”......所以聚合术语可能会保持“可变”,除非我们可以具体提及作为“常数”的东西。


36
投票

默认使用

const
本质上是编程风格的问题。但是各有利弊:

支持默认使用
const
的论据

支持默认使用

const
的论据如下:

  1. 避免非自愿重新分配造成的副作用;
  2. 在代码审查期间,它消除了不确定性,因为看到
    const
    变量的开发人员可以确信它不会被重新分配;
  3. 也许我们可以说它更符合函数式编程和不可变状态。
  4. 使用 TypeScript,在某些情况下可以进行更好的推理。

这是使用 TypeScript

const
时的优势示例:

const hello = "Hello" as string | undefined
if (hello !== undefined) {
    ["A", "B"].forEach(
        name => console.log(`${hello.toUpperCase()}, ${name}`) // OK
    )
}

使用

let
,在
strict
模式下,TypeScript检测到一个错误:

let hello = // …
// …
        name => console.log(`${hello.toUpperCase()}, ${name}`)
//                             ^__ error here: Object is possibly 'undefined'.

支持默认使用
let
的论据

我在这里总结了文章默认使用“let”,而不是“const”,它给出了支持默认使用

let
而不是
const
的论据:

  1. 重新分配不是一件危险的事情,只是...平常;
  2. 如果一个变量可以被重新赋值,那么它应该用
    let
    声明,因为为实常数保留
    const
    更有表现力;
  3. const
    具有误导性,因为它不会阻止修改引用;
  4. 多写两个字捆绑;
  5. 默认使用
    const
    与函数参数不一致;
  6. 使用
    const
    没有性能提升。

3
投票

当你想声明一个不可编辑的变量时,你可以使用

const

同时

let
当你有一个可编辑的变量时使用。

它也可以用于变量作用域

参见:letconst


为什么我们大部分时间都使用
const

因为

const
声明创建了一个 只读 对值的引用(无法重新分配)。

防止我们混淆变量的值


0
投票

使用

const
而不是
let
有一些好处:

  • 可读性:它向其他开发人员发出信号,变量的值一旦分配就不会更改。这使代码更易于阅读和理解,因为读者不必担心代码中的其他地方会重新分配值。

  • Security:当您使用

    const
    时,该值不会被无意或有意地重新分配。这有助于防止错误或恶意代码更改变量的值。

  • 性能

    const
    还可以通过知道该值不会改变来帮助JavaScript引擎优化代码。

也就是说,

const
应该只用于在整个程序执行过程中不会改变的值。如果稍后需要重新分配变量,则应使用
let
.

© www.soinside.com 2019 - 2024. All rights reserved.