什么是块级作用域?
定义:
ES6 中新增了块级作用域。块作用域由 { } 包括,if语句和 for语句里面的{ }也属于块作用域。
为何需要块级作用域?
在ES6之前,函数只能在全局作用域和函数作用域中声明,不能在块级作用域中声明。没有块级作用域导致很多场景不合理
1、内存变量可能覆盖外层变量
2、用来计数的循环变量泄露为全局变量
ES6中的块级作用域:
1、允许块级作用域任意嵌套,外层作用域无法读取内层作用域的变量
2、内层作用域可以定义外层作用域的同名变量
3、不需要立即执行匿名函数
es6的变量声明
ES6中新增let 和 const来定义变量
var : ES5和ES6中 定义全局变量
let : 来定义局部变量 代替var
const : 定义常量(定义后不可修改)
var、let、const的区别
1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
3.const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
let 和 const 的作用
1.禁止重复声明
2.支持块级作用域
3.支持修改
相反,用var声明的变量 : 可以重复声明 没有块级作用域.不能限制