概念: 闭包是指有权访问另一个函数作用域中变量的函数。 一般是函数里面返回函数和函数入参。
作用: 正常函数执行完毕之后,里面声明的变量被垃圾回收处理掉,但是闭包依然让
作用域的变量存在。
参考网址:https://www.cnblogs.com/heyushuo/p/9975911.html
缺点:因为闭包里面的变量都没有释放,所以占用的内存很高。
创建闭包的方式:把函数当作返回值返回。
function getList(){
var name = 'value 值';
return function(){
console.log(name)
}
}
var name = 'window值'
var d = getList()
d()
面试题: var a = {
name: 'aa',
getName: function(){
return this.name;
}
}
1; a.getName() // aa
2: var c = a.getName;
c(); // ‘’
问题: 那怎么样c也能得到name的值?
思路: 在那个加个闭包,不让其回收就行。作用域再嵌套一层。
var a = {
name: 'aa',
getName: function(){
var self = this;
return ()=>{
return self.name;
}
}
}
2: var c = a.getName();
c(); // aa
网友评论