老师您好,看完这两节课,我还不是很理解闭包,可以用白话简单说一下什么是闭包吗?

来源:16-8 作用域和闭包--闭包

小阿飘丶

2018-04-10

老师您好,看完这两节课,我还不是很理解闭包,可以用白话简单说一下什么是闭包吗?

写回答

2回答

双越

2018-04-10

视频中也提到了,闭包不太好用一句话来解释。理解必要你要理解两个常用的应用场景,即视频中提到的:第一,函数作为返回值;第二,函数作为参数传递到其他函数中。在这俩场景下,函数体内的自由变量是如何获取的?理解了这个,你也就理解了闭包。

1
0

wind_msh

2018-04-14

如果题主对OOP有一定了解的话,我想试着用OOP的概念来解释一下闭包。

如果答的不对,还请@双越见谅


1. 从OOP的观点来看,闭包其实是一个OBJECT, 它闭的是一个对象的属性

      -- 在OOP的设计中,绝大多数的属性应该都是私有的, 

    如果这里能理解接下来应该就会好办一些。

    https://www.zhihu.com/question/21142338

2. 为了让外部组件能够访问以及修改闭包这个对象的属性,我们必须有公有的方法,在闭包里面,这个公有的方 法就是在结尾返回的那个function. 

    -- 这个公有的方法被闭包传递给外部环境来访问及修改闭包内闭的属性。

3. 我们通过闭包其实实现的是OOP里面的私有属性封装。


谢谢.



2
0

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程