认识函数(定义-执行-销毁(执行空间))
1-先定义
2-再调用
在JS函数中,数值是先赋值,再进预解析
function fn(a){
console.log(a);
function a(){}
}
fn(100);//ƒ a(){} 说明在函数中,先赋值,再进行预解析
一个不销毁的执行空间
在函数执行空间中,函数代码执行结束,则执行空间销毁,函数内的变量也会销毁;
若想要保存函数内的变量,怎么办?
答:在函数内返回一个引用数据类型(数组、对象、函数),并且在函数外部一直有一个变量引用这个函数的返回值,此时函数的额执行空间不会销毁(在CPU中)
function fn(a,b){
const num = 100;
const obj = {name:'Kelly'}
return obj;
}
let res = fn(10,20);
/*
在函数内部:
函数fn调用,在CPU中开辟一个执行空间 xxff0
赋值和预解析后将代码放入执行空间xxff0中执行
声明变量num并赋值100,开辟一个空间 xxff02 来存储对象{name:'Kelly'},并将地址给到变量obj,返回变量obj
在函数外部:
变量res接收函数fn的返回值xxff02,所以变量一直和执行空间关联,函数执行空间不会销毁
直到res不再引用来自xxff02的值(函数返回值)
语法:res = null
*/