js基础知识——函数的定义与调用
一、函数的定义
- 在堆内存 开一个空间,将函数的函数体的代码 保存到堆内存中,将堆内存的地址保存在变量名(函数名),最后将这个变量名存储在栈内存中
二、函数的调用
- 根据变量名(函数名)中的地址,找到对应的函数
- 然后再调用栈中开一个新的空间(函数的执行空间)
- 在执行空间中 对函数的形参进行赋值
- 在执行空间中 进行变量的域解析
- 在执行空间中 执行函数的代码
- 销毁当前函数的 执行空间
创建永不销毁的执行空间
- 缺点: 占内存地址
- 如何创建?
- 正常书写一个函数
- 在这个函数内向外返回一个引用数据类型(对象、数组、函数)
- 当满足上述条件时,这个函数的执行空间将不会被销毁
function fn(){ //正常书写一个函数 const obj = { name: '萧瑟', age: 18 } return obj //在这个函数内向外返回一个引用数据类型 } //变量 newObj 内部保存着 fn 函数中声明的一个对象 obj 的地址, 所以 fn 函数就不会被销毁掉, 如果销毁了, 那么对象也就无法访问了 const newObj = fn() console.log(newObj) newObj = null // 将 newObj 的值修改后就与函数内部的对象切断了联系, 那么这个函数的执行空间就会被销毁