为了账号安全,请及时绑定邮箱和手机立即绑定

关于js的闭包

关于js的闭包

Smart猫小萌 2019-04-19 16:29:45
代码一(function(){vara=20;window.func=function(){alert(a)}})()代码二varfunc=(function(){vara=20;returnfunction(){alert(a)}})()代码一这种形式是闭包么?俩个函数都可以一直访问a变量,他们的区别是什么闭包的形成必须有return关键字吗?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

一般来讲,js的所有函数都是闭包,但是匿名函数可以在其它函数内部创建,而且可以访问到外层的局部变量,相对来讲功能比较强一点。然而这两种函数都一样,return可有可无。如果一个函数没有return,那它的返回值默认是undefined。
                            
查看完整回答
反对 回复 2019-04-19
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

代码一是闭包,把a的值每次加1测试下就ok了。
两者区别就是,代码一中func是内部函数,并且func被挂载到window下,所以func可以直接调用。代码二中func是外部函数并且被立即执行了,内部函数被当作返回值返回了,所以代码二func()时,也是直接调用的内部函数。
从结果来说两者是相同的,只是实现的方式略有不同。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号