闭包问题解疑
老师视频中有说到闭包,但是我看到后面做变成习题的时候还是有些理解上的误差,请老师解惑:
1、视频中说到闭包是一个函数嵌套在另一个函数中,且外层函数需要返回内层函数:
只有满足了外层函数返回内层函数,这样我在全局下才可以取到外层函数中的局部变量,但是习题中的例子满足了一个函数嵌套在另一个函数内,但是并没有满足一个返回的过程,就是return XX,让我很困惑。
2、闭包的作用就是把函数中的局部变量给取出来吧?但是我不明白这样就是闭包了么,那这样闭包的含义是什么?闭包的闭,取这样的名字,我觉得肯定是封闭了一个东西;
3、
这里的老师说onclick时间函数内部可以访问到外层匿名自执行函数内的变量i。老师说的这个我明白;但是内层函数可以访问的到外层函数中声明的变量,这个不是很正常的事情么,不用闭包内层函数也可以访问到外层函数中申明的变量啊,作用域链会导致内层函数中找不到这个变量的话,就去外层函数找。所以不是太明白这个和闭包有什么关系,闭包不是想访问函数中的局部变量么,这样普通普通函数是不可以的,但是在函数中嵌套一个函数,做一番处理就可以了。
我的思想肯定有些没有转变过来,对于闭包不太清晰,请老师斧正
正在回答
同学你好
闭包是嵌套在另一个函数中, 且外层函数需要返回内层函数,才会形成一个闭包, 这个说法是没有问题的。
练习题这里是一个自执行函数,并不是一个完全的闭包,但是它有闭包的特点: 通过自执行匿名函数函数嵌套一个点击事件的匿名函数。然后自执行的匿名函数形成了一个作用域,通过for循环出来的i值传递给绑定事件的li元素,每循环一次,也会在作用域中保存了当前的i值。所以实现了每次的i值都保存下来了。
闭包的作用就是可以在函数的外部访问到函数内部的局部变量。 然后让这些变量始终保存在内存中,不会随着函数的结束而自动销毁。
闭包只是一种实现方式, 编程中不是一定要使用闭包, 同学可以根据实际的场景选择是否使用闭包,如果需要在函数外部访问函数内部的局部变量就可以使用闭包哦
关于这道编程练习题,是老师回答的不够严谨, 抱歉给同学造成了困扰, 这里其实只是有闭包的特征, 但实际上并不是一个真正的闭包, 可以参考第一条回答
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星