返回列表

转载:IE全局变量的Dissociative Identity Disorder(人格分裂症)

默认分类 2014/12/11 00:54

原文地址:http://hax.iteye.com/blog/349569

代码示例1:在HTML文档里写上这段代码:

<script type="text/javascript"> 
    window['a'] = 'Hi'; 
</script> 
<script type="text/javascript" src="out.js"></script> 
<script type="text/javascript"> 
    alert(a); 
</script> 

然后在out.js里写上这句:

if (false) { 
     var a = 'Hello'; 
} 

然后用FF和IE6分别运行,看看你得到什么。

在FF里会弹出“Hi”,但是在IE6中,会得到“undefined”。

示例代码2:

x = {};  
// window.x;  
alert(x);  
alert(delete x);  
try {  
    alert(x);  
} 
catch(e) {  
    alert(e.name + ":" + e.description);  
}  

以上代码可正常执行。但是如果把第二行的注释去掉,可以观察到在执行 alert(x) 时报出一个“Out of memory”的错误!其后你也将不能对x或者window.x做任何事情。 这短短的代码怎么能out of memory呢——显然这里产生了一个空指针(“遗失引用”)错误!