最近看方老师的文章才算进一步了解了let
控制台输出
let a = x;
会报错
控制台再次输出
let a = 10;
神奇的事情发生了,不是成功赋值,而是报错
如果在控制台输出
a =20;
还是报错
a重新声明不行,那就是已经声明了,但是赋值也不行,
来看看变量的执行过程有三个步骤:
1.系统分配内存(这里给a分配)
2.初始化(一般初始化为undefined)
3.赋值
第一次控制台报错时已经创建了内存,let的初始化和赋值是一起进行的(如果直接写 let a =x),当赋值失败那么退回1,后面你在创建a就会报错,因为系统已经给a分配过内存,但是直接赋值操作也不行,因为a只是创建没有初始化,所以不能使用,即找不到a;
