闭包是怎么产生的?
什么情况下会产生闭包
问题描述:
看了下视频,感觉理解的不是很清楚,请老师讲下。
登陆购买课程后可参与讨论,去登陆吧
同学你好,使用闭包的时候一般都是函数嵌套函数,很少产生特殊情况,目前可以不深入研究,遇到代码后知道是不是闭包就可以了。
祝学习愉快!
同学你好,对于你的问题解答如下:
1、是的,理解是对的。
2、不是的,如果不通过闭包,是无法访问内部的局部变量的,示例:
上图代码会出现报错。
3、是的,理解是对的,如果函数B中没有使用函数A中的变量,就不会产生闭包了。
4、理解是对的。
祝学习愉快~
function A() {
var num = 1;
return num;
}
var res = A();
console.log(res);
这个例子是闭包吗?
同学你好,这个例子不是闭包,函数内单纯的返回了值而已。祝学习愉快!
闭包除了经常出现在函数的嵌套中,还有什么场景会产生闭包?
同学你好,同学的这两个问题,闭包是怎么产生的和什么情况下会产生闭包,本质上一样的。可以参考如下解答
函数A中返回了函数B,函数B使用了函数A的作用域变量,调用A函数后,由于返回的函数B中使用了A函数中变量num,导致A函数作用域中的变量没有被销毁,此时就会产生一个闭包,即:函数B就称为闭包。通过这个闭包可以在A函数外,继续访问A函数内部的变量。
调用了函数B,函数B中又调用了函数A中的局部变量,然后用res这个全局变量接收函数B,所以函数A不会被销毁,局部变量就会保存下来,是这个意思吧
老师说的“通过这个闭包可以在A函数外,继续访问A函数内部的变量。”,如果不通过闭包的话,也是可以访问的,只不过不会保存这个局部变量了,对吗?
“导致A函数作用域中的变量没有被销毁,此时就会产生一个闭包”,如果函数B没有使用函数A中的变量,是不是就不会产生闭包了。(关于闭包是怎么产生的还是不太懂)
闭包的作用:1.保存局部变量不会被销毁 2.可以私有化变量,如果想访问只能通过特定的方法。
以上是我个人的理解,有不对的地方希望老师指正。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
前端技术快速更迭,人才紧缺。带你从0基础开始,成为Web全栈工程师,转行就业更顺畅。
92 2
44 2
74 4
30 1
32 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星