0
点赞
收藏
分享

微信扫一扫

什么是闭包?

芥子书屋 2022-02-10 阅读 72
前端

闭包基本概念:

闭包是一个特殊的函数,使一个作用域有权访问另一个作用域的局部变量,代码上来看就是子函数访问父函数的局部变量并返回的函数。

什么是作用域?

作用域规定了变量能够被访问的‘范围’,离开了这个范围变量就不能被访问。

闭包的作用:

(1)闭包可以创建外部可以访问的隔离作用域

(2)避免全局变量污染,延长变量的作用范围。

闭包的缺点:

(1):导致变量不会被垃圾回收机制回收,造成内存消耗

(2):不恰当的使用闭包可能会造成内存泄漏的问题

闭包的应用场景:

 var load = (function () {
      var obj = {}
      return {
        getResult(id) {
          if (id in obj) {
            return 'obj里已经缓存到了id' + id
          }
          else {
            obj[id] = id
            return 'obj中之前没有id' + id + ',现在已经下载好了'
          }
        }
      }
    }
    )()

    console.log(load.getResult(10)); // obj中之前没有id10,现在已经下载好了
    console.log(load.getResult(12)); //obj中之前没有id12,现在已经下载好了
    console.log(load.getResult(10)); //obj里已经缓存到了id10

练习:


function add(){
	var count = 0;
	return function(){
		count += 1;
		console.log(count);
	}
}
var fun1 = add();
var fun2 = add();
fun1();//1
fun1();//2
fun2();//1

每次外部函数执行的时候,外部函数的引用地址不同,都会重新创建一个新的地址。所以说虽然fun1和fun2都是add(),但是呢都创建了新地址,都是自己的,互不干扰。

举报

相关推荐

0 条评论