javascript - js变量作用域的问题

查看:86
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆