<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'是全局的(窗口)。 –