需求:想再外部访问函数内部的私有变量
问题:函数执行完之后内存会被释放,其中的值也会丢失,所以在外部获取不到函数内部的私有变量
解决:使用闭包,在需要返回数据函数内部再创建一个函数并返回数据,如下代码
function f1(){
var num = Math.random();
function f2(){
//引用上级函数的私有变量
return num
}
return f2
}
//获取f2(),由于f2持有f1的私有变量num,所以num不会被销毁,所以这样也会造成内存泄漏,所以在使用完毕后建议对f=null 置空处理
var f = f1();
var res1 = f();
console.log(res1 + '\n' + res2);
运行结果如下,f1()不会重复执行,所以随机数num 不会改变