js语言特点:函数内部可以直接获取全局变量;函数外部不能获取函数内的局部变量。
- 可以把闭包简单理解为“定义在一个函数内部的函数”
- 闭包就是能够获取函数内部变量的函数
- 本质上,闭包就是将函数内部和外部连接起来的一座桥梁
闭包的使用场景:要从函数外部获得函数内部的布局变量
把f2作为f1的返回值,就可以在f1外部获取它的内部变量
在这个例子中 f2 就是闭包函数
function f1(){
let n = 99;
function f2(){
return n-49;
}
return f2; // !必须在这里把闭包函数return出去
}
let result = f1();
console.log(result()) //100
console.log(result()) //101
console.log(result()) //102
console.log(f1()()) //100
console.log(f1()()) //100
console.log(f1()()) //100
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name; //the window
};
}
};
alert(object.getNameFunc()());
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this; // !!!
return function(){
return that.name; //My Object
};
}
};
alert(object.getNameFunc()());
参考:
https://www.cnblogs.com/huanghuali/p/9851453.html // 什么是闭包
https://www.jianshu.com/p/00c747510df5 // 闭包变量回收问题
网友评论