0

我有两个脚本标签:一个用于设置我的环境,另一个用于读取该设置并对其进行操作。我已将错误减少到以下内容:

<script>
    window.myVar = 'hello world';
</script>
<script>
    var myVar;
    console.log(window.myVar); // Should be 'hello world'
</script>

在 IE9+、Chrome 等中'hello world'被记录。但是,在 IE8 中,undefined会被记录。是什么赋予了?

4

2 回答 2

1

这似乎是一个不起眼的 IE8 错误。

通过简单地将所有 JS 放入一个脚本标签中,您就可以完全避免这个问题。如果您需要它们位于单独的脚本标签中,不确定是否有一个很好的解决方法,但我很想听听。

<!-- This triggers the bug in IE8. -->
<script>
    window.myVar = 'hello world';
</script>
<script>
    var myVar;
    console.log(window.myVar); // Should be 'hello world'
</script>


<!-- This does not trigger the bug in IE8. -->
<script>
    window.myOtherVar = 'hello world again';
    var myOtherVar;
    console.log(window.myOtherVar); // Should be 'hello world again'
</script>

这是在 JSFiddle 中。如果您在 IE8 中打开 F12 开发人员工具,您将看到undefined'hello world again'登录。

于 2013-09-25T17:34:36.857 回答
0

如果这些都是您的脚本,为什么不两次都以相同的方式定义变量(如果您必须定义它两次)?

<script>
 window.myVar = 'hello world';
</script>
<script>
 window.myVar = window.myVar || undefined;
 console.log(window.myVar); // Should be 'hello world'
</script>
于 2013-09-25T17:43:06.637 回答