在 JavaScript 中,为什么我通常更喜欢“const”而不是“let”?

2023-12-06

为什么大部分时间我应该使用const代替let在 JavaScript 中?众所周知,如果我们使用const那么我们以后就无法重新分配值了。那为什么不使用let代替const?


基本上,

  • use let如果变量的值在代码期间会改变
  • use const如果不会的话and您/您的团队想要使用const在您正在从事的项目中的那些情况;这是风格问题

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

Using const当变量的值不打算改变时,可以完成一些事情:

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

  2. 如果您更改代码以便写入该变量,它会给您一个很好的主动错误。 (一个像样的 IDE 可以主动标记这一点,但如果没有,您在运行代码时会收到错误。)然后您可以做出明智的、有意的决定:是否应该将其更改为let,或者您一开始就不想更改该变量的值?

  3. 它向 JavaScript 引擎的优化器提示您不会更改该变量的值。虽然引擎经常可以通过代码分析来解决这个问题,但使用const省去它的麻烦。(警告:我不知道这对 JavaScript 引擎是否真的有用。看起来确实有用,但运行时代码优化是一个非常复杂且有时不直观的过程。)


是的,使用“变量”这个术语来指代那些根据定义不会改变的东西是很有趣的。 :-) 规范的术语是“绑定”,但我打赌您很快不会在日常对话中听到人们谈论“绑定”...因此,聚合术语可能会保持“可变”,除非我们可以具体引用某种“常数”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中,为什么我通常更喜欢“const”而不是“let”? 的相关文章

随机推荐

  • 如何在 R 中将值放在箱线图中,以表示一张图像中的多个箱线图

    我想在 R 中绘制 Delta Project Types 我有 10 个项目类型 我知道如何绘制箱线图 箱线图 Delta Project Types 但是 如何将 Fivenum 最小值 最大值 第一 第二和第三分位数 放在每个箱线图上
  • 在 Rails 应用程序中使用适用于多个模型的设备

    你好 我是 Rails 新手 我已经安装了 Rails 版本 4 我想知道我正在为老师和学生制作项目 我可以将设计宝石应用到模型老师和学生身上吗 我的项目中最重要的是教师和学生的注册表单需要不同 那么谁能告诉我如何应用设计以便可以以不同的方
  • 如何在seaborn中显示所有数字图例值

    我正在尝试创建一个sns lineplot 对于以下数据框 overs season over total runs total overs avg run 0 2008 1 703 745 0 943624 1 2008 2 923 74
  • 仅在新iPad 3上:wait_fences:未能收到回复:10004003

    所以我知道对此有很多问题 但据我所知这是一个独特的情况 所以我想我会发布它 希望这会添加一些信息 最终可以给我们一个答案 解释为什么会发生这种情况 当我的设备旋转时 我收到错误 wait fences 无法接收回复 10004003 我的动
  • Android 通讯录 vcard API

    有没有 Android API 可以提取 vcard 3 0 格式的联系人 我遇到了一个开源 vcard 项目android vcard 但在使用示例提到了以下评论 重要的 如果您正在为 Android 设备开发应用程序 则不必使用此库 因
  • 如何将 TestExecute/TestComplete 结果导出到 teamcity?

    我正在 teamcity 中使用命令行构建步骤通过批处理文件运行 testcomplete 测试 测试运行良好 但我没有看到有关 teamcity 中通过 失败测试的任何信息 基本上 TestComplete 在运行测试后会生成一些日志文件
  • 如何在 Discord.js 嵌入中 ping 消息作者和用户

    我最近开始使用 Discord js 目前正在执行拥抱命令 命令本身工作正常 但我面临的问题是我希望机器人 ping 消息作者和被拥抱的用户 如果我输入命令 a hug user 这就是我得到的 拥抱用户名 但我希望它像这样显示 user拥
  • 在 Spring 中的嵌入式 Jetty 上配置 Spring Security

    我有一个 Spring beans 定义文件 如下所示
  • 使用VBA操作网页上的单选按钮

    我是一名 VBA 菜鸟 尝试在网络上操作单选按钮 但运气不佳 我已经在谷歌上搜索了几个小时 发现了大量的代码片段 我一直试图修改它们来完成这项工作 但没有成功 其中必须是以下内容的一些变体 ie Document getElementsBy
  • PHP 可以处理作为完整 PDF 文档提交的 PDF 表单吗

    简而言之 我有一个 PDF 供客户填写 当他们按下 提交 按钮时 我想自动发送一封电子邮件 并附上完整的 PDF 这应该发生在服务器端 无需与客户进行进一步交互 In Long 目前我已将 PDF 设置为将数据作为 html 表单数据发布到
  • 如何重置 Oracle 中的序列?

    In PostgreSQL 我可以这样做 ALTER SEQUENCE serial RESTART WITH 0 Oracle 有类似的吗 这是 Oracle 大师提供的一个将任何序列重置为 0 的好过程Tom Kyte 下面的链接也对利
  • 未定义对“WinMain@16”的引用 C 错误

    我正在使用 Eclipse C 编程 并且已经编写了这段代码 但每次构建它时 我都会收到错误消息 对 WinMain 16 的未定义引用 我花了两个多小时试图解决这个问题 但我不知道我的错误在哪里 有人可以帮忙吗 这是代码 include
  • 按列将分隔文件拆分为较小的文件

    我熟悉linux中的split命令 如果我有一个 100 行长的文件 split l 5 myfile txt 将把 myfile txt 分成 20 个文件 每个文件有 5 行 并将它们写入文件 我的问题是 我想按列执行此操作 给定一个包
  • 使用 AJAX 发送文件数组

    假设我有一个包含一些图像的数组 var images image1 image2 image3 如何在单个请求中使用 AJAX 将这些图像发送到 php 文件 以下代码不起作用 ajax url PHP posts php type pos
  • 在运行时设置 ConnectionString

    我是 C 编程的初学者 我需要编辑 设置 更改我存储在我的连接字符串app config 我正在使用 VS 数据库向导来创建查询 如果你能写出代码那就太好了 像这样的事情应该让你开始 using System Configuration v
  • 设置为“通知”时正在裁剪大图片

    我想在 Android 通知栏中显示大图片样式图像 但我遇到了问题 gt 当我使用以下代码在通知栏中设置图像时 PendingIntent resultPendingIntent stackBuilder getPendingIntent
  • 使用外部 smtp 服务器发送电子邮件时达到 Amazon EC2 邮件限制

    Hi我使用 grails MailSender 服务 使用下面的 Java Mail API 从 Amazon EC2 Linux 实例发送大量电子邮件 我已将邮件 API 配置为使用端口 25 上的外部 smtp 服务器来发送电子邮件 并
  • 向动态收件人发送电子邮件 SSIS 发送邮件任务

    我有一个 SSIS 包 将在测试 登台和最终生产中部署 它有几个 发送邮件任务 比如 10 个 作为开发人员 我将我的电子邮件地址作为电子邮件的收件人 目前 对于测试人员 我需要将所有脚本任务中的所有 To 更改为例如 电子邮件受保护 如果
  • Oracle SQL:使用 REGEXP_SUBSTR 表达式的插入查询非常长(分割字符串)

    我必须插入表 2 字段 第一个主键 关于文章 第二个涉及它们的大小 这些文章 在源环境中 我有表 主键 TK 文章 和第二个字段的大小串联 但是 我必须将 TK 文章和文章的几种大小插入到目标表中 例如 来源 ART SIZE 1 28 3
  • 在 JavaScript 中,为什么我通常更喜欢“const”而不是“let”?

    为什么大部分时间我应该使用const代替let在 JavaScript 中 众所周知 如果我们使用const那么我们以后就无法重新分配值了 那为什么不使用let代替const 基本上 use let如果变量的值在代码期间会改变 use co