为什么在全局范围内也能使用res?
var counter = (function(){
var res = {};
var _name = 'test';
res.getName = function(){return _name;};
res.setName = function(name){_name=name;};
//return res
return res;
})();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你这代码写得。。。。我也是醉了,这个应该算工厂模式的构造函数吧,但是写法,你再看看。
其实你直接访问
res是访问不到的,可以访问counter。res其实已经被释放掉了,不过其内存中赋值给了counter,counter为全取属性自然是可以全局访问的。1.作用域,
counter在全局声明,res在匿名函数声明,根据作用域你在全局中一定能访问counter,但是不能访问res2.闭包,赋值操作使得
counter保持了对res的引用,所以res一直存在于内存中,counter的值就是res的值综上你在全局能访问的不是
res,而是counter,counter等于res,对你造成的表象是全局能访问res。因为你把
res赋值给counter了。而counter是全局变量。