let命令
块级作用域
ES6新增了let命令,用于声明变量,其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201013074833550.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhb2ZhbmRlZGFpbWE=,size_16,color_FFFFFF,t_70#pic_center)
像上面例子,var声明的i是全局的,全局只有一个i,所以会输出i的最后的结果10,而let声明的i是仅在块级作用域中有效,所以输出的是6
不存在变量提升
var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为undefined。let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则便会报错。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201013075755248.png#pic_center)
暂时性死区
只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外部的影响