2013-10-24 53 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

相關問題