Javascript重新声明的全局变量将覆盖旧值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript重新声明的全局变量将覆盖旧值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1564字,纯文字阅读大概需要3分钟。
内容图文
![Javascript重新声明的全局变量将覆盖旧值](/upload/InfoBanner/zyjiaocheng/696/6a1efcda0a4846e1a9c5e37f958aa177.jpg)
前几天,我遇到了一个有趣的问题,想知道是否有人可以阐明为什么会这样.这就是我正在做的事情(出于本示例的目的,我已经稍微简化了示例):
>我正在使用方括号符号创建一个全局范围的变量,并为其分配一个值.
>后来我声明了一个与上面刚创建的变量同名的变量.注意我没有分配值.由于这是对同一变量的重新声明,因此不应按以下说明覆盖旧值:http://www.w3schools.com/js/js_variables.asp
//create global variable with square bracket notation
window['y'] = 'old';
//redeclaration of the same variable
var y;
if (!y) y = 'new';
alert(y); //shows New instead of Old
>问题是旧值实际上确实被覆盖,例如在上面.警报显示“新”而不是“旧”.为什么呢
我猜想提出我的问题的另一种方法是,上述代码在语义上与下面的代码有何不同:
//create global variable
var y = 'old';
//redeclaration of the same variable
var y;
if (!y) y = 'new';
alert(y); //shows Old
更新1:基于一些评论和答案,我将示例重述为更能反映我的原始问题.
创建2个具有以下内容的javascript文件:
SCRIPT1
//create global variable with square bracket notation
window['y'] = 'old';
SCRIPT2
//redeclaration of the same variable
var y;
if (!y) y = 'new';
alert(y); //shows New instead of Old in IE
在HTML文件中包含这2个文件
<html>
<head></head>
<body>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="my2.js"></script>
</body>
</html>
在Firefox和Chrome浏览器中打开此页面会提示“旧”,这是预期的行为.但是,在IE 8中,该页面实际上会警告“新”
更新2问题已移至此处:Redeclared javascript global variable overrides old value in IE
解决方法:
?我刚刚测试了您的代码,它显示为“旧”,并且已经测试了FF,Chrome,Safari(PC)和IE8.
在这里查看:http://jsbin.com/ifare/edit
内容总结
以上是互联网集市为您收集整理的Javascript重新声明的全局变量将覆盖旧值全部内容,希望文章能够帮你解决Javascript重新声明的全局变量将覆盖旧值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。