<script> var aaa = (function(){ var a = 1; function bbb(){ a++;

<script>
var aaa = (function(){
var a = 1;
function bbb(){
a++;
alert(a);
}
function ccc(){
a++;
alert(a);
}
return {
b:bbb, //json结构
c:ccc
}
})();
aaa.b();
aaa.c()
求aaa.b和aaa.c的值,为什么

这就是所谓的闭包么
值是2和3

这个要从js的内存回收谈起
JS编译代码最开始的时候是通过计数来计算引用
后来就是通过对变量再当前上下文中进行标记,如果引用到的就开辟内存空间,没引用到的就略过
在你这个里面,aaa的上下文中a变量在bbb和CCC方法中都有引用,所以context中的a就没被回收追问

那为什么aaa.c不等于2而等于3呢,不理解啊

追答

aaa.b(); 相当于 a= a+1 这时候a是2
aaa.c() ;也相当于 a= a+1 这时候a是3

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答