js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域
何为块级作用域,块级作用域和局部作用域直接的区别是什么?
局部作用域是函数里面声明的变量,因为声明的变量用var声明,var有变量提升的原因,导致变量在函数内部子函数都处处可见。
块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。块级作用域在变量离开定义的块级代码后应该马上被回收。
if(true){
var a = 5
}
console.log(a) // 5 可以访问到a
if(true){
let b = 5
}
console.log(b) // 报错
所以,es6之后有了块级作用域的概念