全局作用域
有一个全局对象window,他代表浏览器窗口,
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
函数作用域
调用函数时创建函数作用域,函数执行完毕后,函数作用域销毁
每调用一次函数就创建一个函数作用域,他们之间是相互独立的
函数作用域中可以访问到全局作用域变量,反之不行
当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,就向上一级作用域中寻找,直到全局作用域,这个过程称为作用域链,如果全局作用域中依然没有找到,就会报错
使用(window.变量)可以访问全局作用域
函数作用域也有变量提升,函数声明也会在函数中所有代码执行之前执行
function fn(){
fun();
function fun(){}
}//可以执行
在函数中,不使用var声明的变量都会成为全局变量
定义形参就相当于在函数作用域中声明了变量