javascript - IE 是否为每个脚本标签创建新的范围?

标签 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>

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

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

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

最佳答案

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

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

代替

var mylib = mylib || {};

使用

mylib = window.mylib || {};

IE7 可能会覆盖 mylib 的定义什么时候var mylib遇到了。

关于javascript - IE 是否为每个脚本标签创建新的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18187296/

相关文章:

javascript - 为什么我记录的值是正确的,但当我返回它时它是 'undefined' ?

javascript - 由于 Phantomjs 中的 javascript 日志而无法截图?

javascript - Google Feed API 是否支持通过 Node.js 进行访问?

css - 可折叠面板 css 位置/浏览器兼容性

css - 为什么下面的下拉菜单悬停在 IE 上不起作用

javascript - 从导入的库调用 Angular Component 方法

javascript - 从 AJAX 调用成功返回 '0' 或 0?

google-chrome - 单击目标在同一 PDF 文档上的超链接后,Google Chrome 的后退按钮

html - 每个浏览器渲染 css 的方式不同吗?

javascript - 2016 年 8 月 24 日 12 :44 AM Not valid in Safari on Mac