闭包问题解疑

闭包问题解疑

老师视频中有说到闭包,但是我看到后面做变成习题的时候还是有些理解上的误差,请老师解惑:

1、视频中说到闭包是一个函数嵌套在另一个函数中,且外层函数需要返回内层函数:

http://img1.sycdn.imooc.com//climg/5d2c05a2000152fc03400242.jpg

http://img1.sycdn.imooc.com//climg/5d2c05a20001ab2c05210038.jpg

只有满足了外层函数返回内层函数,这样我在全局下才可以取到外层函数中的局部变量,但是习题中的例子满足了一个函数嵌套在另一个函数内,但是并没有满足一个返回的过程,就是return XX,让我很困惑。

2、闭包的作用就是把函数中的局部变量给取出来吧?但是我不明白这样就是闭包了么,那这样闭包的含义是什么?闭包的闭,取这样的名字,我觉得肯定是封闭了一个东西;

3、

http://img1.sycdn.imooc.com//climg/5d2c08890001268109040951.jpg

这里的老师说onclick时间函数内部可以访问到外层匿名自执行函数内的变量i。老师说的这个我明白;但是内层函数可以访问的到外层函数中声明的变量,这个不是很正常的事情么,不用闭包内层函数也可以访问到外层函数中申明的变量啊,作用域链会导致内层函数中找不到这个变量的话,就去外层函数找。所以不是太明白这个和闭包有什么关系,闭包不是想访问函数中的局部变量么,这样普通普通函数是不可以的,但是在函数中嵌套一个函数,做一番处理就可以了。

我的思想肯定有些没有转变过来,对于闭包不太清晰,请老师斧正

正在回答

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

1回答

同学你好

  1. 闭包是嵌套在另一个函数中, 且外层函数需要返回内层函数,才会形成一个闭包, 这个说法是没有问题的。

    练习题这里是一个自执行函数,并不是一个完全的闭包,但是它有闭包的特点: 通过自执行匿名函数函数嵌套一个点击事件的匿名函数。然后自执行的匿名函数形成了一个作用域,通过for循环出来的i值传递给绑定事件的li元素,每循环一次,也会在作用域中保存了当前的i值。所以实现了每次的i值都保存下来了。

  2. 闭包的作用就是可以在函数的外部访问到函数内部的局部变量。 然后让这些变量始终保存在内存中,不会随着函数的结束而自动销毁。

    闭包只是一种实现方式, 编程中不是一定要使用闭包, 同学可以根据实际的场景选择是否使用闭包,如果需要在函数外部访问函数内部的局部变量就可以使用闭包哦

  3. 关于这道编程练习题,是老师回答的不够严谨, 抱歉给同学造成了困扰, 这里其实只是有闭包的特征, 但实际上并不是一个真正的闭包, 可以参考第一条回答

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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