js 闭包
2018-05-24 本文已影响4人
阿亮2019
原型链和闭包是每次笔试面试必考的内容。
什么是闭包
一个持有外部变量的函数,就会形成闭包。
lexical scope 词法作用域: 一个函数和这个函数所访问变量的环境综合
function adder() {
let num = 0;
function add() {
console.log(++num);
}
return add;
}
const add = adder();
add(); // 1
add(); // 2
闭包的作用
- 希望一个变量常驻内存中,不会被垃圾机制回收。如上面一个例子,num变量没有被回收
- 私有化变量,避免被修改你无法直接改num值,只能通过add函数去增加
思考题:
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());