JavaScript 中 var、let 和 const 有什么区别?

2023-10-27

变量声明只是告诉计算机变量存在以及它应该以什么值开始。与其他编程语言类似,JavaScript 也允许声明变量。

JavaScript 中可以使用三个关键字来声明变量:let、var 和 const。每个关键字对于如何使用它们创建的变量都有不同的规则和含义。

  1. let:let 关键字声明一个块作用域的局部变量,可以选择将其初始化为一个值。

    块作用域意味着变量仅在声明它的块内可用,通常用大括号 {} 表示。

  2. var:var 关键字声明一个函数范围或全局变量,可以选择将其初始化为一个值。

    函数作用域意味着该变量仅在声明它的函数内可用。全局变量在整个代码中都可用。

  3. const:const 关键字声明一个块作用域的、不可变的常量变量,即不能重新分配的变量。

    常量也被称为“不可变变量”,但这有点用词不当,因为它们实际上是变量——只是不能重新分配的变量。

var、let 和 const 之间有什么区别?

var 关键字是 JavaScript 中声明变量的最古老的方式,所有浏览器都支持。 let 和 const 关键字是该语言的新添加内容,较旧的浏览器不支持。

如果需要支持较旧的浏览器,可以使用 var 而不是 let 或 const。如果不需要支持旧版浏览器,可以使用let或const。如果您希望变量不可变,请使用 const。

这里有些例子:

1
2
3
4
5
6
7
var x = 1;
let y = 2;
const z = 3;
 
x = 4; //OK
y = 5; //OK
z = 6; //Error

如您所见,var 和 let 变量可以重新赋值,但 const 变量则不能。

另一个区别var 和 let/const 之间的区别是 var 变量是函数作用域的,而 let 和 const 变量是块作用域的。

这意味着 var 变量仅在声明它们的函数内可用。例如:

1
2
3
4
5
6
function foo() {
  var x = 1;
}
 
foo();
console.log(x); // ReferenceError: x 未定义

另一方面,let 和 const 变量仅在声明它们的块内可用。例如:

1
2
3
4
5
6
7
8
function foo() {
  let y = 2;
  const z = 3;
}
 
foo();
console.log(y); // ReferenceError: y 未定义
console.log(z); // ReferenceError: z 未定义

所以,总结一下,var、let 和 const 之间的主要区别是:

  • var 是函数作用域,而 let 和 const 是块作用域。
  • var 变量可以重新赋值,而 let 和 const 变量则不能。
  • var 变量使用 var 关键字声明,而 let 和 const 变量分别使用 let 和 const 关键字声明。
  • const 变量是不可变的,而 let 和 var 变量则不是。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中 var、let 和 const 有什么区别? 的相关文章

  • Spark集群运行问题

    spark输出太多warning messages WARN Executor 2 block locks were not released by TID Lock release errors occur frequently in e
  • 阿里云对象存储oss费用明细

    https www aliyun com price product spm a311a 7996332 0 0 137630803P2qTh oss detail 最终决定 阿里云割韭菜 弃用选择业界其他便宜的 第二年阿里云只给你个续费
  • java操作svn--部分方法

    package com svnutil import java io File import java text DateFormat import java util ArrayList import java util Collecti

随机推荐

  • Fedora12 编译s3c2416 U-Boot1.3.4的Makefile和头文件

    复制Makefile到 和smdk2416 h到include configs 执行 make distclean make smdk2416 config make C Copyright 2007 2008 Jong pill Lee
  • matlab练习程序(Canny边缘检测)

    我可没直接调用系统函数 要是那样就太水了 其实我的matlab代码很容易就能翻译成c c 的 canny边缘检测一共四个部分 1 对原图像高斯平滑 2 对高斯平滑后的图像进行sobel边缘检测 这里需要求横的和竖的还有联合的 所以一共三个需
  • C语言链表——增删改查

    目录 一 链表的概念 1 1 什么是链表 二 链表和数组的区别 2 1 链表和数组的优缺点 2 1 1 数组的优缺点 2 1 2 链表的优缺点 三 链表的静态添加和动态遍历 四 统计链表节点个数及链表查找 五 链表插入 5 1 链表从指定节
  • 【程序设计训练】2-12 绩点计算

    问题描述 学校对本科生的成绩施行绩点制 GPA 将学生的实际考分根据不同学科的不同学分按一定的公式进行计算 规定如下 实际成绩 绩点 90 100 4 0 85 89 3 7 82 84 3 3 78 81 3 0 75 77 2 7 72
  • MIT教授Tegmark:GPT-4敲响警钟,百年后人类何去何从丨智源大会嘉宾风采

    导读 一封呼吁暂停大模型研究6个月的公开信让一家名为未来生命研究所 Future of Life Institute 简称 FLI 站上了风口浪尖 这家研究所的联合创始人Max Tegmark是来自麻省理工学院的物理学家和人工智能研究员 生
  • 对象存储OSS-iOS

    文章目录 对象存储OSS iOS 一 基础解读 1 相关名词 2 OSS的上传和下载 3 基于SDK快速开始 4 基于OSS的移动开发 4 1 整体流程 4 1 1 客户端申请STS凭证 4 1 2 AppServer请求AssumeRol
  • 2022华数杯B题论文思路分析+完整代码(水下机器人组装计划)(一二问答案接出来和标准答案一样)(问题三四逼近正确答案)(完整论文,代码可直接跑)

    写在前面 学校最近搞数学建模竞赛培训 以2022华数杯B题作为训练题目 在查资料过程中发现网上没有哪一篇论文解出了正确答案 而我们组利用Lingo软件准确的解出了正确答案 但是在第三问时 由于决策的变量激增 基于Lingo的模型已经无法解出
  • 五大板块(2)—— 指针

    参考 五大板块 2 指针 作者 丶PURSUING 发布时间 2021 03 18 16 01 22 网址 https blog csdn net weixin 44742824 article details 114981482 本文为学
  • TypeError: parse() got an unexpected keyword argument 'transport_encoding'

    pip install XXX 出现问题 TypeError parse got an unexpected keyword argument transport encoding 解决方法 conda install pip
  • 如何在 Git 中创建空分支(无父分支)

    Git 是一个强大的版本控制系统 使开发人员能够跟踪其代码库中的更改并有效地管理其项目 Git 的关键功能之一是分支 它允许开发人员创建代码库的单独版本并同时处理它们 在本文中 我们将了解如何使用 Git 创建空分支 orphan opti
  • 如何在 Ubuntu 18.04 上安装和配置 VNC 服务器

    VNC 代表 虚拟网络计算 是一组用于远程共享桌面系统的协议 有许多软件可用于远程访问基于 Linux 的桌面 包括 TigerVNC TightVNC Vino vnc4server 等等 TigerVNC 是一款免费 开源 高性能的 V
  • 如何在 Shell 脚本中为用户分配密码

    Command 回声 passwd stdin 例子 使用以下命令在 shell 脚本中更改用户 jack 的密码 例如我们使用字符串密码作为密码 echo password passwd stdin jack 分配用户输入密码 使用以下命
  • 如何在 Ubuntu 20.04 上安装 Google Cloud SDK

    谷歌云SDK 软件开发套件 提供了一组用于管理 Google Cloud Platform GCP 上托管的资源的工具 SDK 提供 gcloud gsutil 和 nd bq 命令 能够通过终端访问 Google Cloud Cloud
  • 如何在 Fedora 上安装 Apache Solr

    Apache Solr 是一个基于名为 Lucene 的 Java 库构建的开源搜索平台 Solr 是一个流行的网站搜索平台 因为它可以索引和搜索多个网站 并根据搜索查询的分类返回相关内容的推荐 本指南将引导您完成在 Fedora 系统上安
  • 如何在Linux中使用zip命令

    The zipLinux 中的命令是一个实用程序 用于将一组文件打包到 zip 存档中 zip 命令还可以用于压缩文件 从而减少它们在计算机硬盘上占用的空间 此外 zip命令可用于加密文件 使未经授权的用户更难以访问zip存档的内容 要解压
  • 如何在 Django 中设置环境变量

    Django 是基于 Python 构建的强大 Web 框架 提供开箱即用的强大功能 它最重要但有时被忽视的功能之一是它能够使用环境变量处理配置 环境变量提供了一种在代码库之外设置配置的方法 从而提供更好的安全性和灵活性 本文旨在简化 Dj
  • Linux 中的 dig 命令及有用示例

    dig 代表 Domain Information Groper 是一个用于收集域名服务器信息的命令行网络工具 dig 命令是另一个强大的工具 类似于nslookup用于诊断 dns 相关问题 我们可以使用 dig 命令查询各种 dns 服
  • 在 Apache 中启用 .htaccess 的综合指南:配置、最佳实践和用例

    htaccess 文件是一个功能强大的配置工具 允许您控制和自定义 Apache Web 服务器上网站行为的各个方面 本指南将介绍如何在 Apache 中启用 htaccess 讨论最佳实践并提供常见用例示例 以帮助您充分利用此功能 1 了
  • 如何在 cPanel/WHM 中全局启用 Gzip 压缩

    Apache mod deflate模块负责 DEFLATE 输出过滤器 允许服务器的输出在通过网络发送到客户端之前进行压缩 mod deflate是替代mod gzip它与旧版本的 Apache 一起使用 仅具有 cPanel 访问权限的
  • JavaScript 中 var、let 和 const 有什么区别?

    变量声明只是告诉计算机变量存在以及它应该以什么值开始 与其他编程语言类似 JavaScript 也允许声明变量 JavaScript 中可以使用三个关键字来声明变量 let var 和 const 每个关键字对于如何使用它们创建的变量都有不