let和const
- 不会变量提升,只存在于声明的内部环境中
- 存在暂时性死区,如果要调用和let/const相关的函数,必须先声明再调用,否则会报错,但无论是否声明,相关变量已经存在于该内部环境中
- const不可以重复声明
- 不会挂载到顶层(window)之下
- 块级作用域
const在声明后需要立刻赋值
let可以在声明后,再赋值
var的怪异
- var声明后在其内部环境,和全局作用域都可以被访问
- 捕获变量会发生变化
for(var=0;i<10;++i){
settimeout(function(){
consloe.log(i)
},1000)
};//打印全部为10