1 let和const使用
let用于变量的声明,可重复赋值;const用于常量的声明,只允许在声明时赋值
2 let和const声明作用域总结
let和const声明只在该代码块(块级作用域:for或if等)有效,不存在变量提升(暂时性死区),而var声明只区分全局作用域和函数作用域,在块级作用域声明的var变量在其父作用域中全局可用,存在变量提升
变量提升:声明变量的操作自动提升到脚本的头部,允许变量在声明前使用
3 let和const声明注意事项
1 let不允许在同一个块级作用域内重复声明,鼓励在块级作用域内使用let进行声明,避免了变量泄露和覆盖
2 避免在块作用域内声明函数(环境导致的行为差异大),如需声明应写成函数表达式
let f = function () {}
3 const声明一个只读变量,一旦声明不可更改,在声明时必须给出初值。const声明的对象可以添加新属性,但不可整个对象直接更改,若不愿对象属性发生更改,可使用object.freeze()
4 顶层对象
const和let声明的对象不属于window,var和function声明的对象则属于window