var、let、const 的作用域差异是什么?变量三兄弟怎么选?

54 次浏览次阅读
没有评论

JavaScript变量三兄弟:var、let、const的终极选择指南

一、变量世界的三大规则

在JavaScript的江湖里,var、let、const如同三兄弟,各自掌握着不同的作用域法则。老大哥var带着”变量提升”的绝技统治ES5时代,而let和const则带着块级作用域的新规则改写ES6后的编码生态。理解它们的核心差异,是每个开发者写出健壮代码的必修课。

二、作用域差异深度解析

1. 作用域类型对比

var的函数作用域:
“`javascript
function testVar() {
if(true) {
var count = 10;
}
console.log(count); // 正常输出10
}
“`

let/const的块级作用域:
“`javascript
function testLet() {
if(true) {
let count = 10;
const MAX = 99;
}
console.log(count); // 报错:count is not defined
console.log(MAX); // 报错:MAX is not defined
}
“`

2. 变量提升与暂时性死区

var的变量提升:
“`javascript
console.log(name); // undefined
var name = “Dora”;
“`

let的暂时性死区:
“`javascript
console.log(name); // 报错:Cannot access ‘name’ before initialization
let name = “Dora”;
“`

3. 函数提升的特殊规则

“`javascript
console.log(sayHi); // 输出函数定义
function sayHi() {}
var sayHi = “hello”;
“`

三、变量三兄弟的选择策略

1. 声明优先级原则

黄金法则:
const优先 → ② let次之 → ③ var特殊场景使用

2. 具体使用场景

声明方式 适用场景 使用比例
const 常量、对象引用、函数表达式 70%
let 循环计数器、条件变量、需要重新赋值的变量 25%
var 旧代码维护、立即执行函数、特殊提升需求 5%

3. 避坑指南

典型错误案例:
“`javascript
for(var i=0; i<3; i++){ setTimeout(() => console.log(i), 100); // 输出3次3
}

for(let j=0; j<3; j++){ setTimeout(() => console.log(j), 100); // 正确输出0,1,2
}
“`

四、现代编码最佳实践

1. 严格模式强制规范

“`javascript
“use strict”;
// 未声明变量直接使用会报错
test = 123; // ReferenceError
“`

2. 对象冻结技术

“`javascript
const config = Object.freeze({
apiUrl: ‘https://api.example.com’,
timeout: 5000
});
“`

3. 循环中的优化策略

“`javascript
// 缓存数组长度优化
const items = [/ 大数据数组 /];
for(let i=0, len=items.length; i五、从ES6看变量声明演进

发展路线图:
var(ES5) → let/const(ES6) → 模式匹配(ES2020提案)

总结

掌握变量三兄弟的核心差异,本质上是理解JavaScript从”函数作用域”到”块级作用域”的进化历程。在现代开发中,const声明应成为默认选择,let处理需要变化的变量,var则退居二线成为历史代码的见证者。这种选择策略不仅能避免90%的作用域陷阱,还能显著提升代码的可维护性和可读性。

正文完
 0

辉哥

一言一句话
-「
最新文章
🚀 CentOS 7 稳定安装 Docker 部署 searxng(国内可用)

🚀 CentOS 7 稳定安装 Docker 部署 searxng(国内可用)

事例:CentOS 7 (Core)。 ⚠️ 关键问题是: 我们走 CentOS 7 专用 + 阿里云镜像稳定...
TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现?

TikTok直播能赚钱吗?赚到的美金怎么提现详解(2026最新) TikTok作为全球最火的短视频平台,不仅是...
京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用?

京东618消费券什么时候发?怎么正确使用? 每年京东618都是全年最值得囤货的购物节点,海量消费券直接让到手价...
淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗?

淘宝网店可以从哪里购买?平台靠谱吗? 在电商时代,越来越多的人希望通过淘宝开店实现创业梦想。但从零开始建店需要...
淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么?

淘宝全球购店铺如何转让?具体操作步骤是什么? 近年来,跨境电商快速发展,淘宝全球购作为阿里巴巴旗下重要的跨境平...
出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗?

出售淘宝三钻店铺要什么条件?流程复杂吗? 在电商创业热潮中,很多新手卖家都希望快速起步,避免从零开始漫长的信誉...
2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗?

2026年淘宝双皇冠店铺怎么转让?两个皇冠靠谱吗? 2026年,淘宝平台竞争更加激烈,很多新手创业者选择直接接...
淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作?

淘宝闪购入口在哪里?免单玩法怎么操作? 淘宝闪购是淘宝App上的一级核心频道,主打限时优惠、品牌好物和快速送达...
2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱?

2026年1688店铺怎么转让?开一家1688要多少钱? 在2026年,1688作为阿里巴巴旗下的B2B批发平...
淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得?

淘宝闪购免单卡和请客卡怎么获得? 在淘宝购物时,最让人兴奋的莫过于各种省钱福利,尤其是闪购频道的免单卡和请客卡...
2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证?

2026年淘宝开店必须实名认证吗?在哪里查看认证? 2026年想在淘宝开店的卖家越来越多,但很多人对实名认证规...