<!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中的错误吗?
答案 0 :(得分:2)
对我来说看起来像个错误。在IE 10中,上述产生
1=[object Object]
2=[object Object]
3=test
4=test
这与Firefox的行为相同。
编辑:另请参阅https://stackoverflow.com/a/2635726/1641070和Why does IE nuke window.ABC variables?