1.let命令
此系列只是本人做的读书笔记,书本链接在这里ES6 入门教程 - ECMAScript 6入门 (ruanyifeng.com)
es6新增命令let,
一、基本用法
1.let声明的变量只在所在的代码块内有效
2.for循环中的计数器,很适合使用let声明变量(i只在for循环体内有效,在循环体外引用就会报错)
for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined
二、不存在变量提升
let所声明的变量,必须在声明后再使用,否则报错
var存在变量提升问题,在声明前使用,值为undefined。
// var 的情况 console.log(foo); // 输出undefined var foo = 2; // let 的情况 console.log(bar); // 报错ReferenceError let bar = 2;
三、暂时性死区
只要块级作用区内存在let命令,他所声明的变量就绑定这个区域,不再受外部影响
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }
ES6 明确规定,如果区块中存在let
和const
命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let
命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”
四、不允许重复声明
let不允许在相同作用域(同一个块级作用域)内,重复申明同一个变量
function func(arg) { let arg; } func() // 报错 function func(arg) { { let arg; } } func() // 不报错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?