浅识js——函数的定义与调用

85 阅读1分钟

js基础知识——函数的定义与调用

一、函数的定义

  • 在堆内存 开一个空间,将函数的函数体的代码 保存到堆内存中,将堆内存的地址保存在变量名(函数名),最后将这个变量名存储在栈内存中

二、函数的调用

  • 根据变量名(函数名)中的地址,找到对应的函数
  • 然后再调用栈中开一个新的空间(函数的执行空间)
  • 在执行空间中 对函数的形参进行赋值
  • 在执行空间中 进行变量的域解析
  • 在执行空间中 执行函数的代码
  • 销毁当前函数的 执行空间

    创建永不销毁的执行空间

    • 缺点: 占内存地址
    • 如何创建?
      1. 正常书写一个函数
      2. 在这个函数内向外返回一个引用数据类型(对象、数组、函数)
      3. 当满足上述条件时,这个函数的执行空间将不会被销毁
        function fn(){  //正常书写一个函数
        const obj = {
          name: '萧瑟',
          age: 18
        }
        return obj  //在这个函数内向外返回一个引用数据类型
      }
      
      //变量 newObj 内部保存着 fn 函数中声明的一个对象 obj 的地址, 所以 fn 函数就不会被销毁掉, 如果销毁了, 那么对象也就无法访问了 
      const newObj = fn()
      console.log(newObj)
      
      newObj = null  //  将 newObj 的值修改后就与函数内部的对象切断了联系, 那么这个函数的执行空间就会被销毁