变量存储在哪里,如何进行读取?
为了解决上述问题,JS需要制定好一些规则:作用域
在工作中,我们接触到最多的作用域:全局、函数、块级、动态
全局作用域
在函数或者代码块{}外定义,就是全局作用域。当然也存在特殊情况,如果我们在函数或者代码块{}内未定义的变量,也是拥有全局作用域的。
函数作用域
在函数内部定义的变量
特性:对外是封闭的,从外层的作用域无法直接访问函数内部的作用域
如果想读取函数内的变量,必须借助 return 或者闭包
块级作用域
在ES6中,块级作用域得到普及,在{}中,我们可以用let、const去声明变量,此变量在{}中就产生了块级作用域
动态作用域
一般往往执行阶段,才能确定变量的作用域,this 指向