IE是否为每个脚本标记创建新范围?

Mar*_*sen 13 javascript cross-browser

为什么以下html文件在IE中显示为默认标题?其他浏览器将标题显示为mytitle.

<script>
window.mylib = window.mylib || {};
mylib.title = 'mytitle';
</script>

<script>
var mylib = mylib || {};
document.title = mylib.title || 'default';
</script>
Run Code Online (Sandbox Code Playgroud)

IE是否为每个脚本标记创建了单独的范围?

这只是一个错误或为什么行为不同?

(在IE8和最新的chrome/ff/opera中测试)

EZL*_*ner 3

HTML<script>标签 Javascript 在window. 因此,分离的脚本标签在同一范围内执行。

特别是对于 IE7,请尽量不要在第二次重新定义变量:

代替

var mylib = mylib || {};
Run Code Online (Sandbox Code Playgroud)

使用

mylib = window.mylib || {};
Run Code Online (Sandbox Code Playgroud)

mylibIE7可能会覆盖when is遇到的定义var mylib

  • 如果它们在 IE 中处于同一范围,那么 mylib 将与 window.mylib 相同,不是吗? (2认同)