关于闭包

关于闭包

  1. 闭包是怎么产生的?

  2. 什么情况下会产生闭包

问题描述:

看了下视频,感觉理解的不是很清楚,请老师讲下。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕星星 2021-03-19 19:23:54

同学你好,使用闭包的时候一般都是函数嵌套函数,很少产生特殊情况,目前可以不深入研究,遇到代码后知道是不是闭包就可以了。

祝学习愉快!

好帮手慕慕子 2021-03-18 18:50:33

同学你好,对于你的问题解答如下:

1、是的,理解是对的。

2、不是的,如果不通过闭包,是无法访问内部的局部变量的,示例:

http://img1.sycdn.imooc.com//climg/60532e8509c6ffbb05560271.jpg

上图代码会出现报错。

http://img1.sycdn.imooc.com//climg/60532e9a0929ebd406670186.jpg

3、是的,理解是对的,如果函数B中没有使用函数A中的变量,就不会产生闭包了。

4、理解是对的。

祝学习愉快~

  • 提问者 期限_ #1

    function A() {

    var num = 1;

    return num;

    }

    var res = A();

    console.log(res);

    这个例子是闭包吗?

    2021-03-18 19:24:12
  • 好帮手慕星星 回复 提问者 期限_ #2

    同学你好,这个例子不是闭包,函数内单纯的返回了值而已。祝学习愉快!

    2021-03-19 15:34:14
  • 提问者 期限_ 回复 好帮手慕星星 #3

    闭包除了经常出现在函数的嵌套中,还有什么场景会产生闭包?

    2021-03-19 16:06:18
好帮手慕慕子 2021-03-18 18:00:16

同学你好,同学的这两个问题,闭包是怎么产生的和什么情况下会产生闭包,本质上一样的。可以参考如下解答

函数A中返回了函数B,函数B使用了函数A的作用域变量,调用A函数后,由于返回的函数B中使用了A函数中变量num,导致A函数作用域中的变量没有被销毁,此时就会产生一个闭包,即:函数B就称为闭包。通过这个闭包可以在A函数外,继续访问A函数内部的变量。

http://img1.sycdn.imooc.com//climg/6053225b09300d3605650441.jpg

祝学习愉快~

  • 提问者 期限_ #1
    1. 调用了函数B,函数B中又调用了函数A中的局部变量,然后用res这个全局变量接收函数B,所以函数A不会被销毁,局部变量就会保存下来,是这个意思吧

    2. 老师说的“通过这个闭包可以在A函数外,继续访问A函数内部的变量。”,如果不通过闭包的话,也是可以访问的,只不过不会保存这个局部变量了,对吗?

    3. 导致A函数作用域中的变量没有被销毁,此时就会产生一个闭包”,如果函数B没有使用函数A中的变量,是不是就不会产生闭包了。(关于闭包是怎么产生的还是不太懂)

    4. 闭包的作用:1.保存局部变量不会被销毁  2.可以私有化变量,如果想访问只能通过特定的方法。

      以上是我个人的理解,有不对的地方希望老师指正。

    2021-03-18 18:36:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师