为什么在全局范围内也能使用res?var counter = (function(){ var res = {}; var _name = 'test';
res.getName = function(){return _name;};
res.setName = function(name){_name=name;}; //return res
return res;
})();
1 回答
倚天杖
TA贡献1828条经验 获得超3个赞
var counter = (function(){ var res = {}; var _name = 'test';
res.getName = function(){return _name;};
res.setName = function(name){_name=name;}; //return res
return res;
})();console.log(res); // 报错,Uncaught ReferenceError: res is not defined(…)console.log(counter); // {}1.作用域,counter在全局声明,res在匿名函数声明,根据作用域你在全局中一定能访问counter,但是不能访问res
2.闭包,赋值操作使得counter保持了对res的引用,所以res一直存在于内存中,counter的值就是res的值
综上你在全局能访问的不是res,而是counter,counter等于res,对你造成的表象是全局能访问res。
添加回答
举报
0/150
提交
取消
