ES6核心语法解析:let与const的声明规则及作用域差异

作者:半夏时间:2026-10-23 01:20:56浏览:618

本文深入解析ES6引入的let和const关键字。let解决了var带来的变量提升和全局污染问题,确立了块级作用域;const用于声明常量,具备暂时性死区特性且不可重新赋值。文章详细阐述了两者在重复声明、作用域限制及复合类型变量处理上的具体差异与注意事项。

ECMAScript标准与JavaScript的关系

初次撰写技术文章难免紧张,若有疏漏之处,恳请读者留言指正。首先厘清“ECMAScript”的概念及其与JavaScript的关系。1996年11月,JavaScript的创造者网景公司(Netscape)联合Sun公司与ECMA(欧洲计算机制造商协会)共同推进JavaScript的标准化工作。次年,ECMA发布了262号标准文件(ECMA-262)的第一版,确立了浏览器脚本语言的标准,并将该语言命名为ECMAScript,即1.0版本。制定标准时未直接命名为“JavaScript”,主要出于商标权考量,同时也为了体现标准制定机构ECMA的中立性与开放性,确保开发的独立性。因此,ECMAScript是规范标准,而JavaScript是其实现之一(其他实现还包括JScript和ActionScript)。在日常语境中,两者常被互换使用。

let关键字:块级作用域与变量提升

接下来介绍ES6引入的新特性“let”。let的功能与var类似,均用于声明变量,但关键区别在于:let声明的变量仅在其所在的代码块内有效。这涉及ES6提出的“块级作用域”概念(注:其他编程语言早已支持此特性,此处为ES6新增)。

ECMAScript标准与JavaScript的关系ECMAScript标准与JavaScript的关系

上述图片展示了let声明变量的作用域限制。具体示例如下:

ECMAScript标准与JavaScript的关系ECMAScript标准与JavaScript的关系ECMAScript标准与JavaScript的关系

对比可见差异:var声明的变量具有全局有效性,每次循环中新的i值会覆盖旧值,导致最终输出最后一轮的i值(此问题可通过闭包解决,参考第三张图)。若使用let,变量仅在块级作用域内有效,当前轮次的i仅在本轮循环中有效,因此每次循环中的i实际上都是一个新的独立变量。此外,还观察到一种特殊现象,请见下图:

ECMAScript标准与JavaScript的关系

注意:①、let不会像var那样发生“变量提升”现象。因此,在使用前必须先声明,否则将报错。

②、存在“暂时性死区”(Temporal Dead Zone,简称TDZ)。只要块级作用域内存在let命令,所声明的变量即与该区域绑定,不受外部影响。简言之,在代码块中,使用let声明变量之前,该变量均不可用。示例如下:

ECMAScript标准与JavaScript的关系

③、let禁止在同一作用域内对同一变量进行重复声明。

现在回顾前文提到的“块级作用域”。在ES5中,仅存在“全局作用域”和“函数作用域”,这曾导致初学者困惑,因为C语言等其他语言早已具备块级作用域。ES6引入块级作用域后,let实际上为JavaScript新增了这一特性,从而避免了变量泄露为全局变量,确保代码块之间互不干扰。此外,ES6规定函数本身的作用域位于其块级作用域内。需特别注意:在严格模式下,函数只能在顶级作用域和函数内部声明,若在其他情况(如if语句、循环语句)下声明,将会报错:

ECMAScript标准与JavaScript的关系

const关键字:常量声明与冻结

最后介绍ES6的新特性“const”。尽管其他编程语言早已支持,但JavaScript在ES6之前并未包含此特性。const用于声明常量,其值不可修改,且声明时必须同时赋值,否则报错。

注意:①、在作用域方面,const与let相同,仅在声明所在的块级作用域内有效;

②、const声明的常量同样不存在“变量提升”,同样存在“暂时性死区”,必须在声明后才能使用。

③、const同样禁止重复声明常量。

综合示例如下:

ECMAScript标准与JavaScript的关系

④、对于复合类型变量,常量名指向的是数据的指针地址,const仅保证地址不变,并不保证数据内容不变,因此使用const声明对象时需格外谨慎!可通过Object.freeze()对对象进行“冻结”以实现数据不变。

ECMAScript标准与JavaScript的关系

ECMAScript标准与JavaScript的关系

ECMAScript标准与JavaScript的关系

以上关于ES6新特性let与const的解析即为全部内容,希望能为读者提供参考,并感谢大家的支持。

作者最新文章