新闻详情

新闻详情

首页 / 资讯中心 / 详情

深入理解 const 变量:从基础到进阶

发布时间:2026/9/26 8:22:17来源:尧图网络
深入理解 const 变量:从基础到进阶
1. 引言在编程世界中const是一个看似简单却极其重要的关键字。它用于声明常量即一旦初始化后其值便不可改变的变量。正确理解和使用const不仅能提升代码的可读性和可维护性还能帮助编译器进行优化减少潜在的错误。本文将带你从基础概念出发逐步深入const的各种应用场景与进阶技巧。2. 什么是 const 变量const是 “constant” 的缩写意为“常量”。在大多数编程语言中如 C、C、JavaScript、TypeScript、Rust 等const用于声明一个值不可被重新赋值的变量。2.1 基本语法以 JavaScript 为例constPI3.14159;PI3.14;// 报错Assignment to constant variable.以 C 为例constintMAX_SIZE100;MAX_SIZE200;// 编译错误assignment of read-only variable MAX_SIZE2.2 核心特性不可重新赋值一旦声明并初始化就不能再指向新的值。必须初始化声明时必须赋值否则编译/运行时报错。块级作用域在 JS 中与let类似const具有块级作用域。3. const 与 let / var 的区别在 JavaScript 中const、let、var三者常被对比关键字作用域可重新赋值可重复声明变量提升var函数级是是是undefinedlet块级是否是暂存死区const块级否否是暂存死区vara1;vara2;// 合法letb1;letb2;// 报错Identifier b has already been declaredconstc1;c2;// 报错Assignment to constant variable.4. const 的“不可变”陷阱const保证的是绑定不可变而非值不可变。对于对象和数组const只阻止重新赋值但允许修改其内部内容。constobj{name:Alice};obj.nameBob;// 合法可以修改属性// obj {}; // 报错constarr[1,2,3];arr.push(4);// 合法可以修改数组内容// arr []; // 报错如果需要真正冻结对象可以使用Object.freeze()constfrozenObjObject.freeze({name:Alice});frozenObj.nameBob;// 严格模式下报错非严格模式静默失败5. const 在 C/C 中的进阶用法在 C/C 中const的用法更加丰富常与指针结合形成多种组合。5.1 指针与 const 的四种组合intvalue10;constint*p1value;// 指向常量的指针不能通过 p1 修改 valueint*constp2value;// 常量指针p2 不能指向其他地址但可修改 valueconstint*constp3value;// 两者都不可变5.2 const 成员函数在类中const成员函数承诺不修改对象状态classCircle{private:doubleradius;public:Circle(doubler):radius(r){}doublegetArea()const{// const 成员函数return3.14159*radius*radius;}};6. const 在 TypeScript 中的类型推断TypeScript 中const与字面量类型结合可以产生更精确的类型推断constdirectionnorth;// 类型为 north字面量类型而非 stringletdir:north|south|east|westdirection;// 合法使用as const可以深度冻结对象的属性类型constconfig{apiUrl:https://api.example.com,retries:3}asconst;// config.apiUrl 的类型是 https://api.example.com而非 string7. 最佳实践与注意事项优先使用const只要变量不需要重新赋值就使用const这能减少意外修改。命名规范常量通常使用全大写加下划线如MAX_LIMIT或遵循团队约定。注意对象冻结需要真正不可变时结合Object.freeze()或使用不可变数据结构。避免魔法数字用const命名有意义的常量提升代码可读性。// 反例if(status200){...}// 正例constHTTP_OK200;if(statusHTTP_OK){...}8. 总结const变量是现代编程中不可或缺的工具。它通过“不可重新赋值”的约束帮助开发者写出更安全、更可预测的代码。理解const在不同语言中的细微差别尤其是对象引用与指针场景能让你在实战中游刃有余。记住核心原则能用const就用const让编译器帮你守住代码的边界。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

金融服务业技术落地的关键要素解析 2026/9/26 9:04:09

金融服务业技术落地的关键要素解析

我无法基于“financial-services”这一孤立标题生成符合要求的高质量博文。原因如下:输入信息严重不足:您仅提供了项目标题“financial-services”,未提供任何【项目正文】、【关键词】或【摘要描述】。该标题本身是宽泛的行业术语&#xff0…

阅读更多 →
Atlas 300V 24G部署YOLO实战:昇腾推理加速卡完整指南 2026/9/26 9:04:09

Atlas 300V 24G部署YOLO实战:昇腾推理加速卡完整指南

1. 先搞清楚:Atlas到底是什么,"运算加速卡"这个说法准不准最近后台收到好几个朋友的私信,问的都是同一件事:"Atlas 300V 24G是不是运算加速卡?能不能用来部署YOLO?"还有人直接把Atlas和…

阅读更多 →
AI 编程工具—Cursor 基础篇:内嵌对话模式配置 TaoToken 实战 2026/9/26 9:04:09

AI 编程工具—Cursor 基础篇:内嵌对话模式配置 TaoToken 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
向日葵被控服务异常掉线排查与无人值守稳定配置指南 2026/9/26 9:04:02

向日葵被控服务异常掉线排查与无人值守稳定配置指南

向日葵远程控制在无人值守场景下突然弹出一句"被控服务异常,暂时无法控制",遇到这种事,大多数人第一反应是跑到被控端机器前重启向日葵软件。运气好能撑几天,运气不好当天晚上又掉线。我过去几年先后在家里NAS、办公室几…

阅读更多 →
【2026前端转 AI 全栈指南】第 2 章(上):用 TaoToken 统一 Key 打通 Node.js + pnpm + Git + VS Code + TypeScript 开发环境 2026/9/26 9:03:56

【2026前端转 AI 全栈指南】第 2 章(上):用 TaoToken 统一 Key 打通 Node.js + pnpm + Git + VS Code + TypeScript 开发环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI驱动视频生产流水线:Claude Code+ffmpeg+ElevenLabs+Remotion实战 2026/9/26 9:03:56

AI驱动视频生产流水线:Claude Code+ffmpeg+ElevenLabs+Remotion实战

1. 从"video-use"这个模糊词说起:它到底想解决什么问题第一次看到"video-use"这个标题,加上项目正文和关键词全是空的,我其实是有点懵的。但把相关热搜词扫一遍,方向就清楚了:Claude Code、ffmpeg…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉