极简三分钟ES6 - let声明

块级作用域:变量只在 {} 内有效

传统 var 的问题

var 声明的变量在函数或全局有效,容易意外泄露。

js 复制代码
if (true) {
    var a = 10;
}
console.log(a);  // 输出 10(变量泄露到外部)

let 的改进

let 声明的变量只在当前代码块(如 iffor{})内有效

js 复制代码
if (true) {
  let b = 20;
}
console.log(b);  // 报错:b 未定义 

用途 :避免循环变量污染全局(如 for(let i=0; ...) 中的 i 不会泄露)

禁止"先使用后声明"(无变量提升

var 的缺陷

变量可在声明前使用(值为 undefined),易引发逻辑错误

js 复制代码
console.log(x);  // 输出 undefined(不报错)
var x = 5;

let 的规则

必须先声明后使用,否则直接报错

js 复制代码
console.log(y);  // 报错:y 未定义 
let y = 5;

提示:强制规范代码顺序,减少意外错误

暂时性死区(TDZ)

现象描述

在块级作用域内,let 声明之前的区域称为"死区",访问变量会报错

js 复制代码
let tmp = 100;
if (true) {
  console.log(tmp);  // 报错(死区内)
  let tmp = 200;    // 声明后才解除死区
}

原因let 绑定了当前作用域,不受外部同名变量影响

禁止重复声明

var 允许重复声明

同一作用域下多次声明 var 不报错(可能覆盖值)。

let 严格禁止

重复声明同一变量会直接报错

js 复制代码
let z = 10;
let z = 20; // 报错:z 已声明 

好处:避免变量被意外覆盖

对比 let vs var vs const

特性 let var const
作用域 块级作用域 函数/全局 块级作用域
变量提升 ❌ 禁止 ✅ 存在 ❌ 禁止
重复声明 ❌ 禁止 ✅ 允许 ❌ 禁止
值可变 ✅ 是 ✅ 是 ❌ 基本类型不可变

何时用 let

  • 需要重新赋值的变量(如循环计数器)。
  • 需要隔离作用域避免泄露(如条件语句内的临时变量)。
  • const 更适合:声明后不再改变的常量(如配置项)。

牢记

"let 守规矩:一屋一变量(块级作用域),先到先得(禁止提升),不玩分身(禁止重复),进门再说话(死区限制)。"

相关推荐
不简说2 分钟前
JS 代码技巧 vol.8 — 20 个函数式编程实战,把 if/else 拍扁的骚操作
前端·javascript·面试
头茬韭菜18 分钟前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全
Cobyte28 分钟前
模板 DSL 解析器中的状态机设计
前端·javascript·vue.js
颜酱30 分钟前
# 02 | 搭骨架:用 LangGraph 编排 12 步工作流(思路)
前端·人工智能·后端
颜酱31 分钟前
02 | 搭骨架:用 LangGraph 编排 12 步工作流
前端·人工智能·后端
刘卓航众创芯云服务部2 小时前
Kimi K3复杂任务实测:我把团队最头疼的三个场景全跑了一遍
前端
软件开发技术深度爱好者2 小时前
小学英语单词魔法学园HTML5实现
javascript·html5·英语学习
勉灬之2 小时前
Next.js + Prisma 跨平台部署踩坑记
开发语言·javascript·ecmascript
cll_8692418912 小时前
一个好看的Wordpress博客文字css样式
前端·css·ui
武子康2 小时前
Shippy:确定性工具、会话级 Sandbox 与 Live-Data Eval(4 类收敛 + 7 步实现方案 + 6 类评测指标)
前端·人工智能·后端