JavaScript的作用域
在ES6之前,js的作用域只有两种:
1.全局作用域
定义在所有函数{}之外的变量,其作用范围是在整个脚本中
2.局部作用域(函数作用域)
使用var定义在函数内部的变量,其作用范围是整个函数结构,超出函数的 {} 花括号的范围则不能使用。
3、块级作用域(ES6中):在一个{}中使用了let关键字声明的变量具有块级作用域 只能在{}内调用(用var关键字声明是没有块级作用域的)
PS:补充知识:块级作用域的三大特点
1.无变量提升——在ES6中 let只能先声明再使用,也就是没变量提升(实际上这也符合了代码的规范,去除了之前的糟粕):
2.具有‘暂时性死区’的特性:
3.防止循环变量(计数器i)变成全局变量