- 全局作用域、局部作用域
- 作用域组成是由:全局的vo 或者是局部的ao 对象、[scope]、this 组成。
- 局部的ao对象跟全局的vo对象区别在于局部的ao对象是有函数参数。
- 词法作用域是在函数声明时就定义的。
- 闭包
闭包:闭包的原理就是内部的函数拥有外部函数的作用域,就相当于拥有外部函数的ao对象+arguments对象,在外部函数调用完之后虽然外部函数是会在队列里销毁掉,但是外部的作用域是不会被销毁。
内存泄露:作用域不会被清除,一直占用内存。
元素加事件、setTimeout、setInterval、函数中返回一个函数。
闭包使用的场景:累加、减。。。
```
function fun(){
var aa = 1
return function a(){
}
}
var b = fun()
- fun的作用域:{
ao:{aa:undefined}, // 初始是undefined,调用的时候才去赋值
scope:全局global.vo 对象 + 自身的ao对象,
this,
}
```