1、创建函数
- 开辟一个堆内存
- 把函数体中的代码当作字符串存储进去
- 把堆内存的地址赋值给函数名/变量名
- 函数在哪创建,那么它执行时候所需要查找的上级作用域就是谁
2、函数执行
1、形成一个私有作用域/执行上下文/栈内存(执行一次形成一个,多个之间不会有影响)
2、形参赋值&变量提升
3、代码执行(把所有堆内存中的代码字符串一行行执行)
4、遇到一个变量,首先看它是否为私有变量(形成和在私有作用域中声明的变量是私有变量),是私有的就操作自己的变量即可,不是私有的则向上级作用域中查找。。。一直找到全局作用域为止=>此为作用域链查找机制
5、私有变量和外界变量没有必然关系,可以理解为被私有栈内存保护起来了,这种机制为闭包保护机制
网友评论