老师看一下

来源:2-1 新的声明方式let(上)

qq_慕运维6460539

2021-04-14

老师,我这样理解有问题吗?首先无论是var还是let都是存在提升的(提升是JS语言中对于变量声明的基本特性),不同的是JS预解析时,会对var声明变量创建出来并赋值undefined,而对let声明变量也会创建出来但不进行词法绑定。所以当先使用后声明时,var会提示undefined,let会提示ReferenceError。
而暂时性死区就是以上流程机制的一种体现

写回答

1回答

谢成

2021-04-15

在我的理解中,let是不存在变量提升的,js中如果声明变量不赋值对应的就是undefined,而不是ReferenceError。

而暂时性死区指的是块级作用域内存在let,它所声明的变量就绑定这个区域,不再受外部的影响。ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。


0
0

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1328 学习 · 296 问题

查看课程