作用域又分为全局作用域和局部作用域。
全局作用域是能够在整个代码空间里都能被访问到的变量或者函数。
有以下几个方面:
- 最外层函数或者在最外层函数通过var来声明的变量;
- window对象的属性和方法具有全局作用域;
- 在函数内部不通过var来声明的变量具有全局作用域
一个经典的例子:
这里面就关系到变量提升的问题,可以把上面代码转换成以下这样:
a是通过var来声明的,又在函数内部,所以是局部作用域,所以是undefined;而b没有通过var来声明,所以它是个全局变量,全局变量会提升到代码最上面,从而可以被所有代码用到。