ES6 let声明之变量提升,块级作用域,计数器变量,函数声明

本文探讨了ES6中let声明的特性,包括它如何避免变量提升,引入块级作用域,以及在计数器变量和函数声明中的应用。通过实例解释了变量提升的概念和暂时性死区(TDZ)原理,强调了在for循环中使用let代替var的优势,并提醒开发者注意块级作用域中函数声明的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ES5中,只存在全局作用域和函数作用域。而且var声明存在变量提升的问题。

 这个函数会输出什么?test? hello world? 不不不,是undefined。因为ES5中没有块级作用域,而且存在变量提升的问题。这个函数实际上的执行如下代码

这是由于变量提升导致的内层变量覆盖了外层的变量。 

 什么是变量提升?

变量可以在声明之前使用,值为undefined。这就是变量提升。

let声明不存在变量提升:let 声明的变量必须要在声明之后使用,否则就会报错。

let声明不存在变量提升的原理:暂时性死区

只要作用域中存在let声明,那么这个变量就会绑定这个区域。同时,这个区域会变成一个块级作用域。只要这个区域中存在let声明,那么let声明的变量就会被存放在暂时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值