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

为什么不能访问到变量a

为什么不能访问到变量a

慕虎7371278 2019-04-21 20:40:56
functionPerson(){}Person.prototype={init:function(){vara=1;this.first();},first:function(){alert(a);}};varperson1=newPerson();person1.init();为什么a是未定义的,this.first()不是相当于闭包吗?能访问外部函数变量
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

闭包内的变量访问是根据闭包创建时所在的作用域决定的,这段代码中函数first并不能访问到init函数作用域内部的a变量,因为这两个函数的作用域是互不包含的。
关于闭包的具体分析可以看看我的博文:Objective-C与JavaScript中的闭包
                            
查看完整回答
反对 回复 2019-04-21
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

計算機科學中所謂閉包,其實是詞法閉包,換句話說函數定義的上下文中的變量在閉包內同樣可以使用。
不要記那些通俗易懂的解釋,因爲其100%是不嚴謹的,這意味着給自己挖坑。
記這句話:
閉包是由函式和與其相關的參照環境組合而成的實體。
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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