函数的两个阶段详解
- 函数的定义阶段
1. 会在堆内存中 开辟一个存储空间
2. 将函数代码一模一样的存储在该空间中(不会解析变量)
3. 将存储空间的地址 赋值给变量(函数名)
- 函数的调用阶段
1. 根据变量中存储的地址,找到对应函数的存储空间
- 如果变量中存储的值,不能找到函数存储空间则报错
+ 报错信息: xxx is not a function
2. 在 调用栈 中开辟一个函数的 `执行空间`
3. 在 函数的 `执行空间` 中进行形参赋值
4. 在 函数的 `执行空间` 中进行预解析
5. 在 函数的 `执行空间` 中执行函数中的代码
6. 在 函数的 `执行空间` 中函数代码执行结束,则 `执行空间` 销毁