const不可改变解释

news/2025/10/4 23:13:59/文章来源:https://www.cnblogs.com/BKYNEKO/p/19126057

不能对const定义的变量本身重新赋值,但是可以通过其他方式更换变量里面的属性或元素(仅限对象类型和数组类型)。

“不能对const定义的变量本身重新赋值”
这指的是 const 创建了一个只读的绑定(read-only binding)。变量名和它所指向的内存地址之间的这个链接关系是不可更改的。

“但是可以通过其他方式更换变量里面的属性或元素(仅限对象类型和数组类型)”
这指的是 const 并不关心那个内存地址上存放的数据内容。对于对象和数组(这两种都属于“引用类型”),变量里存的仅仅是一个地址。const 保证地址不变,但该地址上的那个对象或数组,其内部是可以自由修改(mutate)的。

 

 

我们将类型分为两大类:原始数据类型引用数据类型,因为 const 对它们的行为模式有根本不同。


 

第一类:原始数据类型 (Primitive Types)

包括:Number, String, Boolean, null, undefined, Symbol, BigInt。

核心规则:对于原始类型,const 声明后,变量的值完全不可改变。任何试图重新赋值的行为都会报错。

 

1. 数字 (Number)

// --- 可行操作 ---
const age = 30;
console.log(age); // 30const price = 19.99;
const quantity = 3;
const total = price * quantity; // 使用 const 变量进行计算是完全可以的
console.log(total); // 59.97// --- 不可行操作 ---
const score = 100;
score = 99; // 错误!TypeError: Assignment to constant variable.

 

2. 字符串 (String)

// --- 可行操作 ---
const greeting = "你好";
const name = "世界";
const message = greeting + ", " + name + "!"; // 使用 const 变量创建新字符串
console.log(message); // "你好, 世界!"// --- 不可行操作 ---
const website = "google.com";
website = "bing.com"; // 错误!TypeError: Assignment to constant variable.

 

3. 布尔值 (Boolean)

// --- 可行操作 ---
const isLoggedIn = true;
if (isLoggedIn) {console.log("用户已登录");
}// --- 不可行操作 ---
const hasPermission = false;
hasPermission = true; // 错误!TypeError: Assignment to constant variable.

 

第二类:引用数据类型 (Reference Types)

主要包括:Object 和 Array。

核心规则:对于引用类型,const 只保证变量指向的内存地址不变。你不能让变量指向一个全新的对象或数组,但可以随意修改该对象或数组内部的内容。

 

1. 对象 (Object)

// --- 不可行操作 (重新赋值) ---
const person = {name: "张三",city: "北京"
};// 试图让 person 指向一个全新的内存地址(一个新对象)
person = { name: "李四", city: "上海" }; 
// 错误!TypeError: Assignment to constant variable.// --- 可行操作 (修改内容) ---
const car = {brand: "Toyota",year: 2022
};// 1. 修改属性
car.year = 2023;
console.log(car); // { brand: "Toyota", year: 2023 }// 2. 添加新属性
car.color = "blue";
console.log(car); // { brand: "Toyota", year: 2023, color: "blue" }// 3. 删除属性
delete car.brand;
console.log(car); // { year: 2023, color: "blue" }

 

2. 数组 (Array)

// --- 不可行操作 (重新赋值) ---
const numbers = [1, 2, 3];// 试图让 numbers 指向一个全新的内存地址(一个新数组)
numbers = [4, 5, 6];
// 错误!TypeError: Assignment to constant variable.// --- 可行操作 (修改内容) ---
const fruits = ["apple", "banana"];// 1. 添加一个元素
fruits.push("orange");
console.log(fruits); // ["apple", "banana", "orange"]// 2. 修改一个元素
fruits[0] = "cherry";
console.log(fruits); // ["cherry", "banana", "orange"]// 3. 删除一个元素
fruits.pop();
console.log(fruits); // ["cherry", "banana"]// 4. 清空数组(注意:这依然是在修改原数组,而不是重新赋值)
fruits.length = 0;
console.log(fruits); // []

 

总结表格

变量声明 数据类型 重新赋值 (=) 修改内容 (.prop.push())
const 原始类型 不可行 (不适用)
const 对象/数组 不可行 可行
let 所有类型 可行 可行

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

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

相关文章

US$137.75 OTOFIX D1 One Year Update Service (Subsription Only)

OTOFIX D1 One Year Update Service (Subsription Only)1. Please send us the device serial number with picture to our Email 2. No Need Shipping. No refund service3. This is Only for Software Update, Witho…

在哪个平台做网站比较好义务网网站建设方案

工作中的焦虑 帮助团队建立复原力、处理不确定性和完成任务的8项策略 作者:阿德里安-戈斯蒂克、切斯特-埃尔顿和安东尼-戈斯蒂克 Anxiety at Work 8 Strategies to Help Teams Build Resilience, Handle Uncertainty, and Get Stuff Done By Adrian Gostick and…

地方门户网站的特点微信开发者模式在哪

从这个类中得到的类图,构划出了软件的大部分设计。 系统结构视图提供软件和整个系统结构最复杂的也是最优雅的描述。和通常的软件系统相比,在分布式嵌入系统中了解系统组件如何协同工作是非常重要的。毕竟,每个类图仅仅是一个系统的静态设计…

macOS Sequoia 15.7.1安全更新:修复字体解析器内存损坏漏洞

苹果发布了macOS Sequoia 15.7.1安全更新,修复了FontParser组件中的越界写入漏洞。该漏洞可能被恶意字体文件利用,导致应用程序意外终止或进程内存损坏。更新可通过Mac App Store或苹果官网下载获取。APPLE-SA-09-29…

AtCoder Beginner Contest 426 ABCDEF 题目解析

A - OS Versions 题意 有三种操作系统的版本,按发布时间顺序分别为 Ocelot、Serval、Lynx。 给定字符串 \(X, Y\),请判断版本 \(X\) 相比于版本 \(Y\) 的发布时间是否相同或更靠后(版本相同或更新)。 思路 直接判断…

前端学习教程-ElementPlus 教程

Element Plus 是基于 Vue 3 的企业级 UI 组件库,提供了丰富的预置组件,可帮助开发者快速构建高质量的前端界面。 一、安装 Element Plus 1. 环境要求Vue 3.0+ Node.js 14.0+2. 安装方式 (1)使用 npm 或 yarn 安装(…

镇江百度网站排名中交路桥建设有限公司官网

Linux磁盘管理(二):LVM的创建、格式化和使用 一、LVM原理回顾 LVM的工作原理进行一个总结: (1)物理磁盘被格式化为PV,空间被划分为一个个的PE (2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE…

全网网站建设维护wordpress热门文章 图片

BLEU (Bilingual Evaluation Understudy,双语评估基准)是一组度量机器翻译和自然语言生成模型性能的评估指标。BLEU指标是由IBM公司提出的一种模型评估方法,以便在机器翻译领域中开发更好的翻译模型。BLEU指标根据生成的句子与人工参考句子之间的词、短语…

AI训练的悖论:为什么越追求准确率越会产生幻觉?

在早期时,我曾让大模型撰写一位冷门历史人物的传记。它胸有成竹,娓娓道来:年代、成就,甚至几句“名言”,一应俱全。读起来简直像历史上真的存在一样。 唯一的问题是:大部分内容都不是真的。严格来说,模型并非“…

完整教程:lesson71:Node.js与npm基础全攻略:2025年最新特性与实战指南

完整教程:lesson71:Node.js与npm基础全攻略:2025年最新特性与实战指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

此网站不支持下载视频怎么办wordpress的文要登录才能看

故障现象  一辆2010款起亚赛拉图车,搭载G4ED 发动机,累计行驶里程约为17.2万km。车主反映,车辆行驶正常,但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试,车速表、燃油存量表及发动机冷却温度…

信奥大联赛周赛(提高组)#2516-S 赛后盘点

国庆打的一把奶茶杯,大佬们全都复活了,故窝不占优势 qwq 战果 黄绿蓝紫,250 pts,但是 rk8,被虐爆了。 D1605 E-小梦的密码锁 贪心题,枚举 0~9,求将所有位调成同一个数字需要的操作数,可以通过操作 2 实现单位下…

US$78.85 CG ZA11 BEN.Z(3BTN) 3 Buttons Smart Remote Used with CGDI K2 Remote Key Programmer 5pcs/lot

CG ZA11 BEN.Z(3BTN) 3 Buttons Smart Remote Used with CGDI K2 Remote Key Programmer Package includes:5pc x CG ZA11 BEN.Z(3BTN) 3 Buttons Smart Remote Pictures of CG ZA11 BEN.Z(3BTN) 3 Buttons Smart Remo…

Atcoder Beginner Contest 426 A-D 题解

ACODE #include<bits/stdc++.h> #define usetime() (double)clock () / CLOCKS_PER_SEC * 1000.0 using namespace std; typedef long long LL; void read(int& x){char c;bool f=0;while((c=getchar())<…

网络推广最好的网站有哪些wordpress只显示一个主题

文章目录 SpringSecurity简介快速入门1.准备工作1.2引入SpringSecurity 认证1.登录校验流程2.原理2.1SpringSecurity完整流程2.2认证流程详解 3.解决问题3.1思路分析3.2准备工作3.3.实现3.3.1数据库校验用户3.3.2密码加密存储3.3.3登录接口3.3.4认证过滤器3.3.5退出登录 授权1.…

网站建设维护教程网站开发承诺函

转载于:https://www.cnblogs.com/mountian-lion/p/6353819.html

金融网站建设成功案例做网站具体流程

一、cluster ip Cluster IP 是 Kubernetes 中 Service 的 IP 地址&#xff0c;它是一个虚拟 IP 地址&#xff0c;用于集群内的 Pod 相互通信。 例如&#xff1a; Cluster IP&#xff1a;2.2.2.2负载的真实Pod IP&#xff1a;1.1.1.1 场景&#xff1a; Pod A 的 IP 地址是 …

PSRAM 是什么

SRAM 的英文是 Pseudo Static Random-Access Memory。 可以拆解为:Pseudo - 前缀,意为“伪”、“假的”Static - 静态的Random-Access Memory - 随机存取存储器所以,它的全称直译就是“伪静态随机存取存储器”。 在…

怎么自己改自己做的网站的图片wordpress js 钩子

近几年来&#xff0c;新能源汽车发展越来越快&#xff0c;而限制新能源电动汽车发展的主要因素是续航里程和充电问题。续航里程要靠提高电池性能来解决&#xff0c;而解决充电问题就要靠充电桩的普及来实现。下面小编带着大家一起来了解一下直流充电桩和交流充电桩给电动汽车充…

蓝色大气网站源码短视频素材库大全

流量控制的功能就是让发送方的发送速率不要太快&#xff0c;以便让接收方来的及接受&#xff0c;因此可以说流量控制是一个速度匹配服务&#xff0c;匹配发送方的发送速率和接收方的读取速率。 TCP利用滑动窗口机制来实现流量控制&#xff0c;滑动窗口的基本原理是&#xff0c…