函数的定义与调用
1. 定义
* => 在堆内存开一个空间
* => 将函数的函数体内的代码 保存到堆内存中
* => 将堆内存的地址保存在变量名(函数名), 最后将这个变量名存储在栈内存中
*
2. 调用
* => 根据变量名(函数名)中的地址, 找到对应的函数
* => 然后再调用栈中开一个新的空间(函数的执行空间)
* => 在执行空间中 对函数的形参进行赋值
* => 在执行空间中 进行变量的预解析
* => 在执行空间中 执行函数的代码
* => 销毁当前函数的执行空间