作用域:js运行中浏览器为其提供的执行环境叫作用域也叫栈内存。
(也可以理解为变量和函数可访问的范围。)
作用:隔离变量,不同作用域下的同名变量不会有冲突。
分类:
1、全局作用域
1、全局作用域下的函数可以在程序任意地方访问
2、未被定义直接赋值的变量自动升明为全局作用域。
3、过多的全局作用域容易造成命名污染。
4、window对象属性拥有全局作用域。
2、函数作用域
1、变量在函数内部声明,则拥有函数作用域。根据作用域链内层作用域可以访问外层作用域,反之不行。
3、块作用域(es6出现)
1、let||const 由{}包围。
2、不存在变量提升,不可重复声明。
3、适用于循环中。
---------------------------------------------------
作用域链:在当前作用域中没有找到所需变量,依次向父级作用域寻找,直到访问wiondow对象终止,这一层层关系叫作用域链。