首先你要清楚
- JavaScript的作用域
- 变量的提升
- 常量与变量
一)变量提升
image1-1.png由上图中可知:let与const的声明没有变量提升,if判断是为了提醒你代码执行前会进行预解析,所以打印的结果undefined
二)同一作用域下
image2-1.png由上图可知:在同一作用域中let、const 的声明,不能被重复声明
image2-2.png
image2-3.png
image2-4.png
由上图可知:let 声明变量时可以不用赋值,且可以重新赋值;const 声明常量时,必须赋值,且常量的值不允许更改,复杂数据类型可以更改其属性image2-3.png
三)块级作用域
image3-1.png当前所在的花括号里,就是一个块级做用域
image3-1.png
;
-
for 循环时的经典demo
总结
- let、const的声明,不会进行变量提升;var可以
- let、const的声明,同一作用域中不能被重复声明;var可以
- let、const的声明,具有块级作用域
- const声明的常量,赋值后不能再修改,复杂数据类型可以更改其属性 ; let和var可以修改
- const声明常量时,必须赋值;let和var 声明是可以不用赋值
网友评论