functiona(){// 函数里面返回了一个复杂数据类型return[1,2,3]}// 函数调用时,外面有个变量t来接收它var t =a()// 这个时候,调用a函数开辟的执行空间就不会销毁了,会一直占着内存
t =null//当t被重新赋值时,不再指向那个a函数返回的复杂数据类型(我们知道复杂数据是保存在堆上面,赋值时,是传递的地址),那个开辟的执行空间才会销毁
什么叫直接或间接返回一个函数?
直接返回一个函数,就是return 后面直接跟个函数
functiona(){returnfunction(){}}functionb(){vart=function(){}return t
}
间接返回一个函数,return后面跟一个对象或数组,这个对象或数组里面有一个函数
functiona(){varfn=function(){}return[function(){},fn,……]}functionb(){var a =3var b =4return{getNum1:function(){console.log(a)},getNum2:function(){console.log(b)},...}}