JavaScript中的const关键字解析

在JavaScript中,const关键字用于声明常量,即那些一旦赋值后就不应更改的变量。它在许多方面与let关键字类似,但增加了一个重要的约束条件——必须在声明时初始化,并且之后尝试修改其值会导致错误。下面将深入探讨const的特性及其使用场景。

初始化与不可变性

  • 初始化要求:与let不同,使用const声明变量时,必须立即为其赋予初始值。不提供初始值会导致语法错误。
const pi; // 错误:缺少初始值
  • 不可变性:一旦用const声明并初始化了一个变量,尝试重新赋值会抛出错误。
const age = 19;
age = 36; // 错误:TypeError,不能为常量重新赋值

重复声明与块级作用域

const同样遵循块级作用域的规则,并且禁止在同一作用域内重复声明同名变量。

const name = 'Minos';
const name = 'Nic'; // 错误:SyntaxError,重复声明

同时,const的声明范围也限制在声明它的块内。

const name = 'Minos';
if (true) {const name = 'Nic'; // 这里的name是新的、局部的
}
console.log(name); // 输出 'Minos'

对象与数组的“不变性”

需要注意的是,虽然const确保变量引用本身不会改变,但它并不能保证所引用的数据结构(如对象或数组)内部的不变性。

const person = {}; 
person.name = 'Minos'; // 这是允许的,因为只修改了对象的属性,而非person变量的引用

const与循环

const不能用于声明需要在循环中修改的迭代变量,因为这违背了其不可变性的原则。

for (const i = 0; i < 10; ++i) {} // 错误:给常量赋值

然而,可以在循环中使用const来声明那些不会被改变的变量,这对于for-offor-in循环尤为有用,其中迭代变量通常不需要修改。

for (const value of [1, 2, 3, 4, 5]) {console.log(value);
}
// 输出 1, 2, 3, 4, 5

综上所述,const关键字为JavaScript提供了定义不可变变量的能力,增强了代码的可读性和维护性,尤其是在处理配置项、函数默认参数等场景下。理解const的特性和限制,能帮助开发者写出更加健壮、易于理解的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js使用链表实现音乐播放器(新增,下一首播放,置顶,删除)

什么是链表 链表是一种线性数据结构&#xff0c;与数组类似&#xff0c;它用于存储一系列元素。不过&#xff0c;与数组在内存中连续存储元素不同&#xff0c;链表中的元素&#xff08;称为节点&#xff09;在内存中可以是非连续存放的。每个节点包含两部分&#xff1a;一部分…

Content-Type ‘application/x-www-form-urlencoded;charset=UTF-8‘ is not supported

前端向后端发送数据时候出现了这个问题&#xff0c;发现是内容类型的错误。浏览器的form表单默认 content-type类型为application/x-www-form-urlencoded &#xff1a; <form encType””>中默认的encType&#xff0c;form表单数据被编码为key/value格式发送到服务器&…

proxmox重装后挂载分区

主要是需要备份/etc/pve/storage.cfg storage dir: local path /var/lib/vzcontent vztmpl,iso,backup,imagesshared 0lvmthin: data1 thinpool data1vgname data1content images,rootdirnodes pve232,pve233,pve1dir: hdd1 path /mnt/pve/hdd1content rootdir,snippets,vztm…

Java开发的saas模式智能制造超强云MES系统源码springboot+mysql+uniapp一整套云MES系统源码

Java开发的saas模式智能制造超强云MES系统源码springbootmysqluniapp一整套云MES系统源码 智能制造超强云MES系统概述&#xff1a; MES以生产车间管理为核心&#xff0c;帮助企业实现生产动态监控和管理。把制造数据管理、计划排程管理、生产调度管理、库存管理、质量管理、人…

python小甲鱼作业001-3讲

0.Python是什么类型的语言 编译型语言不同&#xff0c;Python 代码在执行时由解释器直接逐行解释执行&#xff0c;无需先编译成机器语言。这使得开发过程更快&#xff0c;因为你可以即时运行并测试你的代码。 Python 在运行时自动推断变量的类型&#xff0c;无需在代码中显式声…

swagger-ui页面接口的入参出参与代码实体类不一致有差异、swagger请求实体与预期定义不符、swagger参数与实体中参数不一致原因分析

文章目录 一、问题背景二、问题原因及解决方法 一、问题背景 项目集成swagger之后&#xff0c;发现有个接口的请求跟接口对应不上&#xff0c;把其他接口的请求参数放到当前这个请求上了。 如下图&#xff1a;test1接口的请求参数是其他请求的&#xff0c;并不是test1接口的 …

win10如何查看本机ip地址?三招搞定,快来试试吧

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于计算机使用者来说具有重要意义。无论是为了进行网络设置、远程连接&#xff0c;还是解决网络问题&#xff0c;了解如何查看本机IP地址都是一项必备技能。对于使用Windows 10操作系统的用户来说&#xff0…

简单的 Cython 示例

1&#xff0c; pyx文件 fibonacci.pyx def fibonacci_old(n):if n < 0:return 0elif n 1:return 1else:return fibonacci_old(n-1) fibonacci_old(n-2) 2&#xff0c;setup.py setup.py from setuptools import setup from Cython.Build import cythonizesetup(ext_mod…

node.js(express)+MongoDB快速搭建后端---新手教程

前言&#xff1a; Node.js是一个基于 Chrome V8引擎的JavaScript运行环境&#xff0c;是对于前端工程师来说学习成本最小的后端实现方法&#xff0c;本篇文章总结如何从0-1写一个后端的登录接口 一、检查node环境 先检查自己的node是否安装 一般来说前端工程师的电脑环境肯定…

六面体大米装袋机在提升大米包装效率中的作用

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;各行各业都在寻求创新与突破&#xff0c;以提升生产效率和降低成本。而在大米包装领域&#xff0c;六面体大米装袋机的出现&#xff0c;无疑为整个行业带来了革命性的变化。这种先进的机械设备不仅提高了大米的包装效率&a…

map转对象

import com.alibaba.fastjson.JSON;//转list集合 对象List<对象> listJSON.parseArray(JSON.toJSONString(mapLisr),对象.class);//转对象对象 对象 JSON.parseObject(JSON.toJSONString(map1), 对象.class);

【全开源】沃德校友会管理系统(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的校友会综合服务平台&#xff0c;即校友信息管理平台、活动管理平台、校友服务大厅、校友企业服务平台等&#xff0c;实现集中学校、学院、校友会于一体的基础服务平台的搭建&#xff0c;建设一个满足校友信息化长期发展的、可扩展的综合校…

全面盘点多模态融合算法及应用场景

关注作者&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕博&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&#xff0c;项目管理专业人士&#xff0c;上亿营收AI产品研发负责人 多…

SQLServer2022新特性JSON_ARRAY从零个或更多表达式中构造 JSON 数组文本

SQLServer2022新特性JSON_ARRAY从零个或更多表达式中构造 JSON 数组文本 参考官方文档 https://learn.microsoft.com/en-us/sql/t-sql/functions/json-array-transact-sql?viewsql-server-ver16 1、本文内容 语法参数返回值示例 适用于&#xff1a; SQL Server 2022 (16.…

一款更加轻量级的虚拟机:Multipass

一款更加轻量级的虚拟机&#xff1a;Multipass 前言Multipass概述安装Multipassmultipass命令命令使用说明 Multipass的使用查看镜像列表新建和运行虚拟机查看虚拟机列表查看虚拟机信息进入虚拟机外部操作虚拟机删除和释放实例初始化配置虚拟机的调整设置桥接网络接口配置软件源…

Double 4 VR虚拟情景实训教学系统在商务外语课堂上的应用

Double 4 VR虚拟情景实训教学系统在商务外语课堂上的应用具有许多优势。通过VR技术&#xff0c;商务外语课堂可以为学生提供一个真实、生动的学习环境&#xff0c;使他们能够更直观地理解和掌握商务知识&#xff0c;提高他们的外语交流和沟通能力。 首先&#xff0c;VR技术可以…

Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint

所有的sql 通过dblink 查询全部等待中&#xff0c; 同一个SQL 20多个session 在跑&#xff0c;等待事件network&#xff0c;可能怀疑是不是网络断开了&#xff0c;导致没有返回 执行sql 如下&#xff1a; BEGIN Xdblink ; END; 去到dblink 所在的db&#xff0c;发现20多个sql在…

白酒:白酒产地的地域文化与品牌形象

云仓酒庄豪迈白酒&#xff0c;作为中国白酒的一部分&#xff0c;其品牌形象深受产地的地域文化影响。地域文化是一个地区与众不同的文化传统和价值观&#xff0c;它影响着当地人的生活方式和审美观念&#xff0c;进而影响白酒的品牌形象。 首先&#xff0c;白酒产地的历史与传统…

windows句柄

引用&#xff1a;windows程序员面试指南 句柄 句柄是Windows系统中对象或实例的标识&#xff0c;这些对象包括模块、应用程序实例、窗口、控件、位图、GDI对象、资源、文件等。 数值上&#xff1a;是一个32位无符号整型值&#xff08;32位系统下&#xff09;&#xff1b; 逻辑…

Spark基础:Scala内建控制结构

在Scala中&#xff0c;控制结构是编程的基础&#xff0c;它们允许你根据条件执行不同的代码块&#xff0c;或者重复执行某些代码块。Scala提供了多种内建的控制结构&#xff0c;这些结构在Apache Spark的编程中同样非常有用。以下是一些Scala中常用的内建控制结构&#xff1a; …