本帖最后由 wyy102489 于 2012-08-21 10:18:37 编辑

解决方案 »

  1.   

    没明白你要表单什么。。
    function outerfunc() {
        var mvar = 1;
        function innerFunc() {
            if (mvar == undefined)
                var mvar = 100;//如果你是要操作outerfunc的私有变量mvar,不要使用var定义mvar,要不这个mvar是innerFunc的变量了
            console.log(mvar);//这里也是innerFunc的变量mvar
        };
        innerFunc();
    }
    outerfunc();
      

  2.   


    我就是想在innerFunc里面判断mvar是否已经定义了。如果没有定义那我就给它定义一个,赋个初值
    innerFunc中还会有很多用到outerFunc里的mvar的地方。所以我有必要先判断一下它是否已定义。。
      

  3.   

    而且如果那里不加var的话,就变成这样了if (mvar == undefined)
        mvar = 100;如果外面没有定义mvar,直接就报错了。。
      

  4.   

    if (typeof mvar == "undefined")
        mvar = 100;
      

  5.   

    厉害,原来这样可以既检测变量是否存在又避免检测时报错。
    但这样的话mvar就变成全局变量了。和我的第一种折衷办法效果是一样的了。
      

  6.   


    我已经看了两天作用域了。。就是因为有了一定理解才能提出这个问题和两种折衷方法的吧。。
    只是想看看大家有没有更好的方法而已。。
    目前自己觉得第二种折衷方法最能让我接受了。不会污染全局变量,而且把内部用到mvar的地方全部替换成_mvar也不是很难。