2013-10-24 130 views
0
<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)?

+0

你的描述你应该是不可能的后复位。你可以在http://jsfiddle.net上设置演示吗? – Matt

+2

关于你的评论,'name'是**不是**局部变量。它在没有'var'语句的情况下声明,因此它们存在于全局范围内(即全局变量)。 – ComFreek

+0

在什么浏览器下?另外,'name'是全局的(窗口)。 –

回答

0

变化namen_ame,它会工作:)

name是我的Chrome一个全局变量,所以它不是一个刷新

+0

是的,将变量名称从“name”更改为“name1”使其变得清晰,感谢您的帮助 – Adrevol

相关问题