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 ?

MMMHUHU
浏览 457回答 1
1回答

扬帆大鱼

缕一缕思路:m1之所以能访问到count,是因为m1跟count在同一个function里声明的,也就是他们在同一个作用域下,但是m2所在的function跟count可不是在同一个function作用域下的,也没有存在function嵌function的关系,自然访问不到。题主是觉得module1本身就跟count在同一个function下,所以给module1加个方法,这个方法就跟count在同一个作用域下?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript