对闭包的理解?优缺点?-问答-阿里云开发者社区-阿里云

开发者社区> 茶什i> 正文

对闭包的理解?优缺点?

2019-11-19 18:11:19 360 2

对闭包的理解?优缺点?

取消 提交回答
全部回答(2)
  • huc_逆天
    2019-11-20 09:04:10

    闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。要注意:(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。 (2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

    0 0
  • 茶什i
    2019-11-20 15:50:09

    概念:闭包就是能够读取其他函数内部变量的函数。

    三大特性:

    函数嵌套函数。 函数内部可以引用外部的参数和变量。 参数和变量不会被垃圾回收机制回收。 优点:

    希望一个变量长期存储在内存中。 避免全局变量的污染。 私有成员的存在。 缺点:

    常驻内存,增加内存使用量。 使用不当会很容易造成内存泄露。 示例:

    function outer() {
      var name = "jack";
      function inner() {
        console.log(name);
      }
      return inner;
    }
    outer()(); // jack
    
    
    function sayHi(name) {
      return () => {
        console.log(`Hi! ${name}`);
      };
    }
    const test = sayHi("xiaoming");
    test(); // Hi! xiaoming
    
    

    虽然 sayHi 函数已经执行完毕,但是其活动对象也不会被销毁,因为 test 函数仍然引用着 sayHi 函数中的变量 name,这就是闭包。 但也因为闭包引用着另一个函数的变量,导致另一个函数已经不使用了也无法销毁,所以闭包使用过多,会占用较多的内存,这也是一个副作用。

    0 0
添加回答
相关问答

4

回答

PHP市场份额占比反超Python、java排名第一?

珍宝珠 2019-12-11 13:55:17 7978浏览量 回答数 4

38

回答

【每日一题】SQL 知识大测验 | 持续更新

茶什i 2019-11-22 11:17:53 28910浏览量 回答数 38

3

回答

【精品问答】Python数据爬取面试题库100问

珍宝珠 2019-11-11 14:26:20 10682浏览量 回答数 3

10

回答

有奖征文:50字吐露你在家办公的有趣经历(事故)

珍宝珠 2020-02-04 15:17:28 9663浏览量 回答数 10

4

回答

【精品问答】Python二级考试题库

珍宝珠 2019-11-22 15:02:29 9322浏览量 回答数 4

3

回答

2020年热门编程语言的发展方向

珍宝珠 2020-02-17 17:58:58 8084浏览量 回答数 3

20

回答

有奖互动:你怎么在家远程办公?2亿用户选择了钉钉

珍宝珠 2020-02-04 09:12:36 9307浏览量 回答数 20

11

回答

【精品问答】Java实战200例(附源码)

珍宝珠 2020-02-14 11:55:46 21011浏览量 回答数 11

14

回答

程序员加班的真正原因是什么?

茶什i 2019-12-27 13:25:09 11600浏览量 回答数 14

8

回答

【精品问答】Python实战100例 - 附源码

珍宝珠 2019-11-20 12:03:21 12663浏览量 回答数 8
+关注
204
文章
1654
问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载