IE中的全局变量奇数

时间:2012-10-30 16:12:05

标签: javascript internet-explorer

  

可能重复:
  Why does IE nuke window.ABC variables?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <script>
        if(typeof q === "undefined"){
            window.q = {test: "test"};
        }
        alert("1="+q) 
    </script>
    <script>
        alert("2="+q)
        if(typeof q === "undefined"){
            var q = {};
        }
        alert("3="+q.test)
    </script>
    <script>
        alert("4="+q.test)
    </script>
</body>

在IE8中,结果是

1=[object Object]
2=undefined
3=undefined
4=undefined

第二个script似乎覆盖了q的{​​{1}}。

如果我将代码更改为第一个window的{​​{1}}到window.q = {test: "test"};,则结果将与其他浏览器相同。

这是IE中的错误吗?

1 个答案:

答案 0 :(得分:2)

对我来说看起来像个错误。在IE 10中,上述产生

1=[object Object]
2=[object Object]
3=test
4=test

这与Firefox的行为相同。

编辑:另请参阅https://stackoverflow.com/a/2635726/1641070Why does IE nuke window.ABC variables?