代码1
function tt(){ if(typeof a=="undefined"){ a=new Object(); } return a; }
这里的a=new Object();相当于是window.a=new Object();了。
代码2
function tt(){ return function(){ if(typeof a=="undefined"){ a=new Object(); } return a; } }
这里的a=new Object();就完全不是window.a=new Object();了。证明是window.a值为undefined。请问为什么会这样
另外问题还有这样的问题
在严格模式下 变量的声明都需要var 不然会报错。以同样的代码 的代码为例
代码1.1
function tt(){ "use strict"; if(typeof a=="undefined"){ a=new Object(); } return a; }
报错。这个很符合期望。
代码2.1
function tt(){"use strict"; return function(){ if(typeof a=="undefined"){ a=new Object(); } return a; } }
这个没有报错,也感到奇怪。这和严格模式下定义变量必须使用var不符啊
慕勒3428872
相关分类