为什么不能访问到变量a

functionPerson(){}
Person.prototype={
init:function(){
vara=1;
this.first();
},
first:function(){
alert(a);
}
};
varperson1=newPerson();
person1.init();
为什么a是未定义的,this.first()不是相当于闭包吗?能访问外部函数变量
慕虎7371278
浏览 435回答 2
2回答

阿波罗的战车

闭包内的变量访问是根据闭包创建时所在的作用域决定的,这段代码中函数first并不能访问到init函数作用域内部的a变量,因为这两个函数的作用域是互不包含的。关于闭包的具体分析可以看看我的博文:Objective-C与JavaScript中的闭包

慕婉清6462132

計算機科學中所謂閉包,其實是詞法閉包,換句話說函數定義的上下文中的變量在閉包內同樣可以使用。不要記那些通俗易懂的解釋,因爲其100%是不嚴謹的,這意味着給自己挖坑。記這句話:閉包是由函式和與其相關的參照環境組合而成的實體。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript