javascript - js变量作用域的问题
本文介绍了javascript - js变量作用域的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在研究js模块化写法的时候产生的疑问,代码如下
// 立即执行函数写法,保证外部不能访问到 count
var module1 = (function() {
var count = 0;
var m1 = function() {
return count;
};
return {
m1: m1
};
})();
// 如果现在想给 module1 添加新的方法
module1 = (function(mod) {
mod.m2 = function() {
return count;
}
return mod;
})(module1);
console.log(module1.m1());//可以访问到 count
// console.log(module1.m2());
我想知道为什么 module1.m2()
访问不到 count
?
解决方案
缕一缕思路:m1之所以能访问到count,是因为m1跟count在同一个function里声明的,也就是他们在同一个作用域下,但是m2所在的function跟count可不是在同一个function作用域下的,也没有存在function嵌function的关系,自然访问不到。
题主是觉得module1本身就跟count在同一个function下,所以给module1加个方法,这个方法就跟count在同一个作用域下?
这篇关于javascript - js变量作用域的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文