新手求助:在函数里怎么判断函数外的变量是否定义
- JScript code
function outerfunc() { var mvar = 1; function innerFunc() { if (mvar == undefined) var mvar = 100; console.log(mvar); }; innerFunc();}outerfunc();每次输出都是100啊。。我知道这是因为js解释器先解析再运行导致预定义了局部变量mvar,从而覆盖了外面的 mvar,但如何才能避免这种现象,正常地判断一个外部变量是否定义并在它未定义时准备一个初值呢?
目前我只想到把它改造成全局变量和改变变量名这两种折衷方法。
- JScript code
function outerFunc() { mvar = 1; function innerFunc() { if (mvar == undefined) mvar = 100; console.log(mvar); }; innerFunc();}outerFunc();- JScript code
function outerfunc() { var mvar = 1; function innerFunc() { if (mvar == undefined) var _mvar = 100; else var _mvar = mvar; console.log(_mvar); }; innerFunc();}outerfunc();但是仍想知道有没有不用折衷的方法呢?
[解决办法]
没明白你要表单什么。。
- JScript code
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();
[解决办法]
if (typeof mvar == "undefined")
mvar = 100;