函数作用域
-
调用函数时创建函数作用域;函数执行完毕,函数作用域销毁
-
每调用函数一次,函数会创建一个新的函数作用域,彼此间互相独立
-
在函数作用域以内可访问到全局作用域内的变量(全局变量)
var f1=20 function fn1(){ console.log(f1) } fn1() // 结果:20
-
全局作用域中无法访问到函数作用域内变量
function fn1(){ var f2=10 } fn1() console.log(f2) //结果:报错f2 is not defined
-
在函数作用域中操作变量,会在其自身作用域中寻找
- 若存在,则使用自身变量
- 若不存在,逐级向上一级寻找
- 若全局作用域中依旧未找到则报错,ReferenceError引用异常
-
在函数中需访问全局重名变量,可使用window对象,默认就近寻找变量
-
函数作用域中,同样存在变量提升和函数提升
function fn2() { console.log(f3) var f3 = 100 } fn2() //结果:undefined
-
在函数中,不使用var关键字声明的变量都会成为全局变量