(在评论之后创建一个单独的问题: Javascript 重新声明全局变量会覆盖旧值)
我使用方括号表示法创建一个全局作用域的变量,并在外部js文件中给它分配一个值。
在另一个js文件中,我声明了一个与上面创建的变量同名的变量。请注意,我没有分配一个值。由于这是对同一变量的重新声明,旧值不应被覆盖,如此处所述:http://www.w3schools.com/js/js_variables.asp
创建以下内容的2个JavaScript文件: Script1
//create global variable with square bracket notation
window['y'] = 'old';
脚本2
//redeclaration of the same variable
var y;
if (!y) y = 'new';
alert(y); //shows New instead of Old in IE
在你的HTML文件中包含这两个文件。
<html>
<head></head>
<body>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="my2.js"></script>
</body>
</html>
在 Firefox 和 Chrome 中打开此页面会弹出“old”,这是预期行为。然而在 IE 8 中,页面实际上会弹出“new”。
对于为什么 IE 会发生这种情况,有什么想法吗?