<html>
<head>
<script type='text/javascript'>
alert(name);
function init() {
name = parseInt(name) +1; // name is a local variable created by init
function displayName() { // displayName() is the inner function, a closure
alert (name); // displayName() uses variable declared in the parent function
}
displayName();
}
init();
</script>
</head>
<body>
Some Text
</body>
</html>
这是我简单的JavaScript代码。我只是复制/粘贴上面的代码并刷新多次以查看奇怪的输出。Javascript变量作用域:为什么每次刷新都会增加变量?
我每次刷新页面,我可以看到名字变量增加1
第一负载:警报“”和1个
第二负载:警报1和11
第三负载:警报11 111
等等......
如果我关闭窗口或选项卡,然后重新加载,它似乎工作正常。但是,再次,在同一个窗口或选项卡上进行第二次重新加载时,会得到与上述相同的输出结果。
我的问题是:为什么和可变name
如何后仍可刷新和多刷新,以及(F5或按Ctrl +移+[R)?
你的描述你应该是不可能的后复位。你可以在http://jsfiddle.net上设置演示吗? – Matt
关于你的评论,'name'是**不是**局部变量。它在没有'var'语句的情况下声明,因此它们存在于全局范围内(即全局变量)。 – ComFreek
在什么浏览器下?另外,'name'是全局的(窗口)。 –