作用域
作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。
全局作用域 AO
1函数外面定义的变量拥有全局作用域
2未定义直接赋值的变量自动声明为拥有全局作用域
3.window对象的属性拥有全局作用
局部作用域 GO
局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所以在一些地方会把这种作用域成为函数作用域。
作用域链
当代码在一个环境中执行时,会创建变量对象的一个作用域链(作用域形成的链条)
作用域链的前端,始终都是当前执行的代码所在环境的变量对象
作用域链中的下一个对象来自于外部环境,而在下一个变量对象则来自下一个外部环境,一直到全局执行环境
全局执行环境的变量对象始终都是作用域链上的最后一个对象
var a = 100;
function fun () {
var b = 18;
function fun1 () {
var c=12;
console.log(c);//12
}
fun1();
console.log(a);//100
fun2();
}
fun();